:root{--color-background:#000;--color-foreground:#fff;--color-white-text:#fffffff2;--color-subtext:#fff9;--color-link:#fff9;--color-link-hover:#fff6;--color-dash:#ffffff26;--color-year:#fff6;--color-selection:#000;--color-selection-bg:#fff;--color-interaction:#47a8ff;--color-interaction-soft:#47a8ff29;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-spring:cubic-bezier(.22, 1, .36, 1);--ease-in-out:cubic-bezier(.45, 0, .55, 1)}.skip-link{background:var(--color-foreground);color:var(--color-background);z-index:100;padding:8px 16px;font-size:14px;text-decoration:none;position:absolute;top:-100%;left:0}.skip-link:focus{top:0}:where(a,button):focus-visible{outline:2px solid var(--color-interaction);outline-offset:4px}h1.white_text{font-family:var(--font-basier), sans-serif;margin:0;font-size:28px;font-weight:400;line-height:1.1}body{font-family:var(--font-basier), sans-serif;background-color:var(--color-background);min-height:100vh;color:var(--color-white-text);flex-direction:column;align-items:center;gap:0;font-size:18px;font-style:normal;font-weight:400;line-height:1.5;display:flex}.container{background-color:var(--color-background);width:100%;max-width:760px;min-height:100vh;color:var(--color-white-text);flex-direction:column;flex-shrink:0;align-items:flex-start;gap:56px;margin:0 auto;padding:80px 20px 40px;font-size:18px;font-weight:400;display:flex}.container.container--home{gap:0}.container--home>.about_me,.container--home>.section--work,.container--home>.section--case-studies,.container--home>.section--launch,.container--home>.section--projects,.container--home>.section--experiments{margin-bottom:72px}.container--home>.section--other{margin-bottom:64px}.container--home>.section--contact{margin-bottom:72px}.about_me{flex-direction:column;align-self:stretch;align-items:flex-start;gap:16px;display:flex}.header{align-self:stretch;align-items:center;gap:12px;display:flex}.container--home .header h1{font-size:20px}.avatar{width:40px;height:40px;transition:transform .24s var(--ease-spring);border-radius:50%;flex-shrink:0;display:block}.avatar-reveal{border-radius:50%;flex-shrink:0;width:40px;height:40px;position:relative;overflow:hidden}.avatar-interactive{cursor:pointer;transition:transform .22s var(--ease-spring), box-shadow .22s var(--ease-out);background:0 0;border:0;padding:0;box-shadow:0 0 0 1px #ffffff24}.avatar-interactive:active{transform:scale(.93)}.avatar-pattern{pointer-events:none;will-change:background-image;background-color:#e1e3e6;background-position:50%;background-repeat:repeat;background-size:18px;display:none;position:absolute;inset:0}.about_me.intro-copy{text-wrap:pretty;gap:0;font-size:clamp(18px,3vw,20px)}.white_text{color:var(--color-white-text);transition:color .2s var(--ease-out)}.pattern-reveal__visual{display:inline}.pattern-reveal__word{white-space:nowrap;will-change:opacity, visibility;margin-right:.24em;display:inline-block;position:relative}.pattern-reveal__word:last-child{margin-right:0}.pattern-reveal__cover{z-index:1;pointer-events:none;will-change:opacity, visibility, background-image;background-color:#e1e3e6;background-position:50%;background-repeat:repeat;background-size:auto 100%;position:absolute;inset:-.04em 0}.pattern-reveal__sr{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.section{flex-direction:column;align-self:stretch;align-items:flex-start;gap:16px;display:flex}.section-heading{color:var(--color-subtext);font-family:var(--font-basier), sans-serif;text-transform:uppercase;letter-spacing:0;font-size:14px;font-weight:400}.experience-list{flex-direction:column;align-self:stretch;gap:10px;display:flex}.experience-card{opacity:0;animation:fadeInUp .3s var(--ease-out) forwards;transition:opacity .22s var(--ease-out);flex-direction:column;align-self:stretch;gap:12px;display:flex;transform:translateY(8px)}.experience-card:first-child{animation-delay:0s}.experience-card:nth-child(2){animation-delay:40ms}.experience-card:nth-child(3){animation-delay:80ms}.experience-card:nth-child(4){animation-delay:.12s}.experience-card:nth-child(5){animation-delay:.16s}.experience-link{opacity:1;grid-template-columns:20px max-content minmax(20px,1fr) max-content max-content;align-items:center;column-gap:14px;width:100%;padding:2px 0;text-decoration:none;animation:none;display:grid;transform:none}.experience-link>.white_text,.list-item>.white_text{font-family:var(--font-basier), sans-serif;transition:color .2s var(--ease-out), opacity .2s var(--ease-out);font-weight:400}.experience-link>.subtext,.experience-link>.year{transition:color .2s var(--ease-out)}.company-logo{flex-shrink:0;width:20px;height:20px;display:block}.company-logo-reveal{width:20px;height:20px;transition:transform .22s var(--ease-spring);flex-shrink:0;display:block;position:relative;overflow:hidden}.media-pattern{z-index:2;pointer-events:none;will-change:background-image;background-color:#e1e3e6;background-position:50%;background-repeat:repeat;background-size:6rem;display:none;position:absolute;inset:0}.company-logo-reveal .media-pattern{background-size:10px}.subtext{color:var(--color-subtext)}@property --launch-light{syntax:"<number>";inherits:false;initial-value:0}@property --launch-spot-x{syntax:"<percentage>";inherits:false;initial-value:50%}@property --launch-spot-y{syntax:"<percentage>";inherits:false;initial-value:50%}.launch-feature{--launch-light:0;background:radial-gradient(340px circle at var(--launch-spot-x) var(--launch-spot-y), rgba(167, 230, 182, calc(.15 * var(--launch-light))), rgba(167, 230, 182, calc(.045 * var(--launch-light))) 45%, transparent 72%) padding-box, radial-gradient(380px circle at var(--launch-spot-x) var(--launch-spot-y), rgba(255, 255, 255, calc(.075 * var(--launch-light))), rgba(255, 255, 255, calc(.02 * var(--launch-light))) 45%, transparent 75%) padding-box, linear-gradient(color-mix(in srgb, #121a17, #151f1a calc(var(--launch-light) * 100%)) 0 0) padding-box, radial-gradient(320px circle at var(--launch-spot-x) var(--launch-spot-y), rgba(193, 255, 209, var(--launch-light)), rgba(167, 230, 182, calc(.6 * var(--launch-light))) 40%, transparent 75%) border-box, linear-gradient(rgba(167, 230, 182, calc(.18 + .16 * var(--launch-light))) 0 0) border-box;min-width:0;color:var(--color-white-text);transition:--launch-light .28s ease, --launch-spot-x .14s var(--ease-out), --launch-spot-y .14s var(--ease-out);border:1px solid #0000;border-radius:4px;grid-template-columns:minmax(0,1fr) auto;align-self:stretch;align-items:center;gap:16px;padding:16px;display:grid}.launch-feature:focus-within{--launch-light:1}.launch-link{min-width:0;color:inherit;grid-template-columns:48px minmax(140px,.62fr) minmax(0,1fr);align-items:center;gap:16px;text-decoration:none;display:grid}.launch-identity{flex-direction:column;gap:4px;min-width:0;display:flex}.launch-icon-reveal{border-radius:12px;flex-shrink:0;width:48px;height:48px;display:block;position:relative;overflow:hidden}.launch-icon{width:48px;height:48px;display:block}.launch-icon-reveal .media-pattern{background-size:16px}[data-portfolio-media] .media-pattern{background-size:28px}.launch-kicker{color:var(--color-year);text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:8px;margin:0;font-size:11px;font-weight:400;line-height:1.3;display:flex}.launch-platforms{border-left:1px solid #ffffff29;align-items:center;gap:7px;padding-left:8px;display:inline-flex}.launch-platform-icon{flex-shrink:0;display:block}.launch-platform-icon--apple{width:14px;height:14px}.launch-platform-icon--android{width:16px;height:16px}.launch-title{color:var(--color-white-text);margin:0;font-size:18px;font-weight:400;line-height:1.25}.launch-description{min-width:0;color:var(--color-subtext);margin:0;font-size:14px;line-height:1.45}.launch-demo-button{border:1px solid var(--color-dash);min-height:44px;color:var(--color-subtext);font:inherit;white-space:nowrap;cursor:pointer;transition:color .2s var(--ease-out), border-color .2s var(--ease-out), background-color .2s var(--ease-out), transform .16s var(--ease-out);background:0 0;border-radius:4px;align-items:center;gap:8px;padding:10px 12px;font-size:14px;font-weight:400;line-height:1;display:inline-flex}.launch-demo-button:active{transform:scale(.98)}.launch-demo-dialog{border:1px solid var(--color-dash);width:min(420px,100vw - 32px,56.25dvh - 46px);max-width:none;max-height:calc(100dvh - 32px);color:var(--color-white-text);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:#0a0a0a;border-radius:6px;margin:auto;padding:12px;position:fixed;inset:0;overflow:auto}.launch-demo-dialog::backdrop{background:#000000e6}body:has(.launch-demo-dialog[open]){overflow:hidden}.launch-demo-header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.launch-demo-header h2{color:var(--color-subtext);padding-left:4px;font-size:14px;font-weight:400;line-height:1.4}.launch-demo-close{width:44px;height:44px;color:var(--color-subtext);cursor:pointer;transition:color .2s var(--ease-out), background-color .2s var(--ease-out);background:0 0;border-radius:4px;flex-shrink:0;place-items:center;display:grid}.launch-demo-dialog video{aspect-ratio:9/16;background:#000;border-radius:2px;width:100%;height:auto;display:block}.launch-demo-error a{text-decoration:underline}.list{flex-direction:column;align-self:stretch;align-items:flex-start;gap:12px;display:flex}.list-item{opacity:0;animation:fadeInUp .3s var(--ease-out) forwards;flex-wrap:wrap;align-self:stretch;align-items:center;gap:16px;display:flex;transform:translateY(8px)}.list-item:first-child{animation-delay:0s}.list-item:nth-child(2){animation-delay:40ms}.list-item:nth-child(3){animation-delay:80ms}.list-item:nth-child(4){animation-delay:.12s}.list-item:nth-child(5){animation-delay:.16s}.list-item:nth-child(6){animation-delay:.2s}.project-list{gap:0}.project-list .list-item{border-top:1px solid var(--color-dash);transition:opacity .22s var(--ease-out), background-color .2s ease, transform .16s var(--ease-out);grid-template-columns:minmax(176px,.44fr) minmax(0,1fr);align-items:baseline;gap:24px;padding:13px 28px 13px 0;text-decoration:none;display:grid;position:relative}.project-list .list-item>.arrow-icon{color:var(--color-year);position:absolute;top:19px;right:0}.project-list .list-item:focus-visible{background-color:#ffffff09}.project-list .list-item:focus-visible>.arrow-icon{color:var(--color-white-text)}.project-list .list-item:last-child{border-bottom:1px solid var(--color-dash)}.project-list .dash,.other-works-list .dash{display:none}.project-list .subtext{transition:color .2s var(--ease-out);grid-column:2}.other-works-list{flex-flow:wrap;gap:10px 24px}.other-works-list .list-item{flex-direction:row;align-self:auto;align-items:center;gap:4px;width:auto;text-decoration:none}.other-works-list .white_text{font-family:var(--font-basier), sans-serif;text-underline-offset:3px;transition:opacity .2s var(--ease-out);font-size:18px;text-decoration:underline}a.list-item,a.experience-link{transition:transform .16s var(--ease-out)}a.list-item:active,a.experience-link:active{transform:scale(.99)}.links{flex-flow:wrap;align-self:stretch;align-items:flex-start;gap:20px;display:flex}.list-item.link{flex-direction:row;gap:8px}.link{color:var(--color-link);transition:color .2s var(--ease-out);text-decoration:none;position:relative;overflow:hidden}.link:after{content:"";height:2px;transition:transform .2s var(--ease-out);background:currentColor;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.dash{border-color:var(--color-dash);border-style:dashed;border-width:1px 0 0;flex:1 0;width:100%;min-width:20px;height:1px;display:inline-block}.year{font-family:var(--font-basier), sans-serif;color:var(--color-year);white-space:nowrap}.footer{flex-direction:column;align-self:stretch;gap:16px;margin-top:auto;display:flex}.footer-meta{justify-content:space-between;align-self:stretch;font-size:16px;display:flex}.light_text{color:var(--color-year)}.list-item.email{align-items:baseline}.list-item .copy-text{font-size:16px}.experiments-cta{border:1px solid var(--color-dash);max-width:100%;transition:background-color .2s var(--ease-out), border-color .2s var(--ease-out), transform .16s var(--ease-out);background-color:#ffffff14;border-radius:6px;align-items:center;gap:8px;padding:9px 14px;text-decoration:none;display:inline-flex;box-shadow:inset 0 1px #ffffff14}.experiments-cta:active{transform:scale(.98)}.experiments-cta-text{color:var(--color-white-text);font-family:var(--font-basier), sans-serif;white-space:nowrap;font-size:16px}.experiments-cta-arrow{color:var(--color-subtext);width:18px;height:18px;transition:transform .2s var(--ease-spring), color .2s var(--ease-out);flex-shrink:0}.back-link{color:var(--color-subtext);font-size:14px;font-family:var(--font-basier), sans-serif;transition:color .2s var(--ease-out);align-items:center;gap:6px;text-decoration:none;display:inline-flex}.back-link svg{width:16px;height:16px;transition:transform .2s var(--ease-out)}.video-grid{columns:2;align-self:stretch;column-gap:12px}.video-thumb{break-inside:avoid;transition:transform .2s var(--ease-out);border-radius:6px;margin-bottom:12px;text-decoration:none;display:block;position:relative;overflow:hidden}.video-media{transition:box-shadow .2s var(--ease-out);background:#ffffff0d;border-radius:6px;display:block;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff17}.video-corner-badge{z-index:3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#ffffffe0;opacity:0;pointer-events:none;width:26px;height:26px;transition:opacity .18s var(--ease-out), transform .22s var(--ease-spring), border-color .18s var(--ease-out);background:#0a0c0eb8;border:1px solid #ffffff2e;border-radius:50%;justify-content:center;align-items:center;font-size:12px;line-height:1;display:inline-flex;position:absolute;top:10px;right:10px;transform:scale(.88)translate(-2px,2px)}.container--home .video-media{aspect-ratio:8/5}.container--home .video-media video{object-fit:cover;height:100%}.video-thumb img,.video-thumb video{width:100%;transition:transform .32s var(--ease-out), opacity .2s var(--ease-out);border-radius:6px;display:block}.video-thumb:active{transform:scale(.99)}.video-label{font-size:13px;font-family:var(--font-basier), sans-serif;color:var(--color-subtext);transition:color .2s var(--ease-out);padding:8px 0 4px;line-height:1.4;display:block}.container.container--work{gap:0}.container--work>.work-hero{margin-top:48px}.work-overview-section{margin-top:24px}.work-contributions-section{margin-top:48px}.work-case-study-section{margin-top:32px}.work-beyond-section{margin-top:56px}.container--work>.work-lead-media{margin-top:64px}.work-gallery-section{align-self:stretch;margin-top:24px}.work-links-section{margin-top:56px}.work-cta-section{margin-top:40px}.container--work>.site-footer{margin-top:56px}.work-hero{flex-direction:column;align-self:stretch;gap:24px;display:flex}.work-header{align-items:center;gap:16px;display:flex}.work-header h1{font-size:24px;line-height:1.2}.work-header .subtext{font-size:16px;line-height:1.4}.work-logo{flex-shrink:0;width:40px;height:40px;display:block}.work-logo-reveal{flex-shrink:0;width:40px;height:40px;display:block;position:relative;overflow:hidden}.work-logo-reveal .media-pattern{background-size:16px}.work-headline{font-family:var(--font-basier), sans-serif;color:var(--color-white-text);margin:0;font-size:30px;font-weight:400;line-height:1.2}.work-overview{color:var(--color-subtext);margin:0;line-height:1.6}.work-lead-media{align-self:stretch}.work-contributions-section{gap:12px}.work-contributions{grid-template-columns:minmax(0,1fr);gap:0;width:100%;display:grid}.work-contribution{border-top:1px solid var(--color-dash);grid-template-columns:minmax(160px,.72fr) minmax(0,1.45fr);align-items:start;gap:32px;padding:20px 0;display:grid}.work-contribution:last-child{border-bottom:1px solid var(--color-dash)}.work-contribution-title{font-family:var(--font-basier), sans-serif;color:var(--color-white-text);margin:0;font-size:20px;font-weight:400;line-height:1.3}.work-contribution-desc{color:var(--color-subtext);margin:0;line-height:1.6}.work-beyond-section{gap:12px}.work-beyond{grid-template-columns:minmax(0,1fr);gap:0;width:100%;display:grid}.work-beyond-group{border-top:1px solid var(--color-dash);grid-template-columns:minmax(160px,.72fr) minmax(0,1.45fr);align-items:start;gap:32px;padding:20px 0;display:grid}.work-beyond-group:last-child{border-bottom:1px solid var(--color-dash)}.work-beyond-title{font-family:var(--font-basier), sans-serif;color:var(--color-white-text);margin:0;font-size:20px;font-weight:400;line-height:1.3}.work-beyond-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.work-beyond-item{color:var(--color-subtext);padding-left:20px;font-size:18px;line-height:1.6;position:relative}.work-beyond-item:before{content:"";background:#fff3;border-radius:50%;width:5px;height:5px;position:absolute;top:11px;left:0}.work-images{flex-direction:column;align-self:stretch;gap:24px;display:flex}.work-figure{cursor:zoom-in;flex-direction:column;gap:8px;margin:0;display:flex}.work-image-wrapper{transition:box-shadow .2s var(--ease-out);background:#ffffff0d;border-radius:6px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff14}.work-cta{color:var(--color-subtext);margin:0}.work-cta-link{color:var(--color-white-text);text-underline-offset:3px;transition:opacity .2s var(--ease-out);text-decoration:underline}.work-cta-link:hover{opacity:.6}.lightbox{z-index:9999;width:100vw;height:100vh;animation:lightbox-in .25s var(--ease-out);background:#000;flex-direction:column;display:flex;position:fixed;top:0;left:0}@keyframes lightbox-in{0%{opacity:0}to{opacity:1}}.lightbox-closing{animation:lightbox-out .2s var(--ease-out) forwards}.lightbox-closing .lightbox-image{animation:lightbox-image-out .2s var(--ease-out) forwards}@keyframes lightbox-out{0%{opacity:1}to{opacity:0}}@keyframes lightbox-image-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}.lightbox-header{flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 24px;display:flex}.lightbox-controls{align-items:center;gap:4px;display:flex}.lightbox-btn{color:#ffffffb3;cursor:pointer;transition:transform .15s var(--ease-out), background .2s var(--ease-out), color .2s var(--ease-out);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:8px;display:flex}.lightbox-btn:active:not(:disabled){transform:scale(.94)}.lightbox-btn:hover:not(:disabled){color:#fff;background:#ffffff1a}.lightbox-btn:disabled{opacity:.3;cursor:default}.lightbox-zoom-level{color:#ffffff80;text-align:center;font-variant-numeric:tabular-nums;min-width:40px;font-size:12px}.lightbox-divider{background:#ffffff26;width:1px;height:16px;margin:0 4px}.lightbox-content{-webkit-overflow-scrolling:touch;flex:1 1 0;min-height:0;overflow:auto}.lightbox-image{-webkit-user-select:none;user-select:none;width:100%;height:auto;min-height:0;animation:lightbox-image-in .3s var(--ease-out);display:block}@keyframes lightbox-image-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.lightbox-caption{color:#ffffff80;margin:0;font-size:14px}.lightbox-nav{z-index:2;color:#fff;cursor:pointer;transition:transform .15s var(--ease-out), background .2s var(--ease-out);background:#000000b3;border:1px solid #ffffff26;border-radius:50%;padding:12px;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-nav:active{transform:translateY(-50%)scale(.95)}.lightbox-nav:hover{background:#000000e6}.lightbox-nav-prev{left:16px}.lightbox-nav-next{right:16px}.lightbox-counter{color:#ffffff4d}.lightbox-backdrop{z-index:-1;cursor:default;background:0 0;border:none;position:absolute;inset:0}button.lightbox-content{text-align:left;background:0 0;border:none;width:100%;padding:0}button.work-figure{text-align:left;width:100%;transition:transform .16s var(--ease-out);background:0 0;border:none;padding:0}button.work-figure:active{transform:scale(.995)}.work-image{width:100%;height:auto;transition:transform .32s var(--ease-out);display:block}.work-caption{font-family:var(--font-basier), sans-serif;color:var(--color-subtext);transition:color .2s var(--ease-out);font-size:13px;line-height:1.4}.contact-heading{color:var(--color-subtext);font-family:var(--font-basier), sans-serif;text-transform:uppercase;letter-spacing:0;margin:0;font-size:14px;font-weight:400}.contact-links{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.contact-link{cursor:pointer;transition:transform .16s var(--ease-out);align-items:center;gap:4px;text-decoration:none;display:inline-flex}.contact-link:active{transform:scale(.99)}.contact-link-text{font-size:18px;font-family:var(--font-basier), sans-serif;color:var(--color-white-text);text-underline-offset:3px;transition:opacity .2s var(--ease-out);text-decoration:underline}.arrow-icon{width:15px;height:15px;color:var(--color-subtext);transition:transform .2s var(--ease-spring), color .2s var(--ease-out), opacity .2s var(--ease-out)}.contact-link--email{position:relative}.work-pager{border-top:1px solid var(--color-dash);grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;width:100%;margin-top:48px;padding-top:32px;display:grid}.work-pager-card{color:var(--color-white-text);transition:transform .16s var(--ease-out), border-color .2s var(--ease-out), background-color .2s var(--ease-out);background:linear-gradient(135deg,#ffffff09 0%,#ffffff03 100%),#090a0c;border:1px solid #ffffff1f;border-radius:6px;flex-direction:column;gap:6px;padding:16px 18px;text-decoration:none;display:flex;box-shadow:inset 0 1px #ffffff12}.work-pager-card:active{transform:scale(.99)}.work-pager-card--next{text-align:right;align-items:flex-end}.work-pager-kicker{color:var(--color-year);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:6px;font-size:11px;line-height:1.2;display:inline-flex}.work-pager-arrow{transition:transform .2s var(--ease-spring);display:inline-block}.work-pager-company{color:var(--color-white-text);align-items:center;gap:8px;font-size:18px;line-height:1.25;display:inline-flex}.work-pager-logo{flex-shrink:0;width:18px;height:18px}.work-pager-role{color:var(--color-subtext);font-size:14px;line-height:1.35}.site-footer{flex-direction:column;gap:4px;margin-top:auto;display:flex}.footer-text{font-size:12px;font-family:var(--font-basier), sans-serif;color:var(--color-year);margin:0}@media (hover:hover) and (pointer:fine){.avatar-interactive:hover{box-shadow:0 0 0 2px #ffffff5c}.avatar-interactive:hover .avatar{transform:scale(1.08)}.link:hover{color:var(--color-link-hover)}.experience-list:hover .experience-card:not(:hover){opacity:.4}.experience-card:hover .company-logo-reveal{transform:scale(1.08)}.experience-link:hover>.white_text{color:#fff}.experience-link:hover>.dash{border-color:#ffffff57}.experience-link:hover>.subtext{color:#ffffffe0}.experience-link:hover>.year{color:#ffffffa6}.project-list:has(.list-item:hover) .list-item:not(:hover):not(:focus-visible){opacity:.65!important}.project-list .list-item:hover{background-color:#ffffff09}.project-list .list-item:hover>.arrow-icon{color:var(--color-white-text)}.project-list .list-item:hover .white_text{color:#fff}.project-list .list-item:hover .subtext{color:#ffffffe0}.experiments-cta:hover{background-color:#ffffff24;border-color:#ffffff52}.experiments-cta:hover .experiments-cta-arrow{color:var(--color-white-text);transform:translate(3px)}.back-link:hover{color:var(--color-white-text)}.back-link:hover svg{transform:translate(-3px)}.video-thumb:hover .video-media{box-shadow:inset 0 0 0 1px #ffffff3d}.video-thumb:hover .video-corner-badge{opacity:1;transform:scale(1)translate(0)}.video-thumb:hover img,.video-thumb:hover video{transform:scale(1.015)}.video-thumb:hover .video-label{color:var(--color-white-text)}button.work-figure:hover .work-image-wrapper{box-shadow:inset 0 0 0 1px #fff3}button.work-figure:hover .work-image{transform:scale(1.01)}button.work-figure:hover .work-caption{color:var(--color-white-text)}.other-works-list .list-item:hover .white_text,.contact-link:hover .contact-link-text{color:var(--color-white-text);opacity:.5}.other-works-list .list-item:hover .arrow-icon,.contact-link:not(.contact-link--email):hover .arrow-icon{color:var(--color-white-text);transform:translate(1.5px,-1.5px)}.contact-link--email:hover .copy-icon{color:var(--color-white-text);transform:scale(1.08)}.work-pager-card:hover{background:linear-gradient(135deg,#ffffff0e 0%,#ffffff05 100%),#0c0e12;border-color:#ffffff47}.work-pager-card--prev:hover .work-pager-arrow{color:#fff;transform:translate(-3px)}.work-pager-card--next:hover .work-pager-arrow{color:#fff;transform:translate(3px)}.launch-feature:hover{--launch-light:1}.launch-demo-button:hover{color:var(--color-white-text);background:#ffffff0a;border-color:#ffffff4d}.launch-demo-close:hover{color:var(--color-white-text);background:#ffffff0f}}.not-found{flex-direction:column;align-items:flex-start;gap:16px;margin-top:80px;display:flex}.not-found-code{font-family:var(--font-basier), sans-serif;color:var(--color-white-text);margin:0;font-size:48px;font-weight:400;line-height:1}::selection{color:var(--color-selection);background-color:var(--color-selection-bg)}.fade-in{opacity:0;animation:fadeInUp .3s var(--ease-out) forwards;transform:translateY(8px)}.pattern-motion-active.fade-in,.pattern-motion-active .fade-in,.pattern-motion-active .list-item,.pattern-motion-active .experience-card{animation:none}.pattern-motion-active .fade-in{opacity:1;transform:none}@keyframes fadeInUp{to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-delay:0s!important}.fade-in,.list-item,.experience-card{opacity:1;transform:none}}@media (max-width:1024px){.container{gap:48px;padding:72px 16px 40px}}@media (max-width:768px){.container{gap:48px;padding:56px 48px 40px}.list,.links{gap:20px}.experience-list{gap:24px}}@media (max-width:640px){.work-header h1{font-size:22px}.work-header .subtext{font-size:14px}.work-logo,.work-logo-reveal{width:36px;height:36px}.container--work>.work-hero{margin-top:40px}.work-overview-section{margin-top:24px}.work-contributions-section{margin-top:40px}.work-beyond-section{margin-top:48px}.container--work>.work-lead-media{margin-top:56px}.work-gallery-section{margin-top:16px}.work-links-section{margin-top:48px}.work-cta-section{margin-top:32px}.container--work>.site-footer{margin-top:48px}.work-contribution{grid-template-columns:minmax(0,1fr);gap:4px;padding:16px 0}.work-beyond{grid-template-columns:minmax(0,1fr);gap:0}.work-hero{gap:20px}.work-beyond-group{grid-template-columns:minmax(0,1fr);gap:4px;padding:16px 0}.experience-link{grid-template-columns:20px minmax(0,1fr);align-items:start;gap:2px 12px}.experience-link .company-logo-reveal{grid-area:1/1/span 3;margin-top:3px}.experience-link>.white_text,.experience-link>.subtext,.experience-link>.year{grid-column:2}.experience-link>.white_text{grid-row:1}.experience-link>.subtext{grid-row:2}.experience-link>.year{grid-row:3}.project-list{gap:0}.project-list .list-item{grid-template-columns:1fr;gap:3px;padding:14px 28px 14px 0}.project-list .subtext{grid-column:1}.launch-feature{grid-template-columns:minmax(0,1fr)}.launch-link{grid-template-columns:48px minmax(0,1fr)}.launch-description{grid-column:1/-1}.launch-demo-button{justify-self:end}.work-pager{grid-template-columns:minmax(0,1fr)}.work-pager-card--next{text-align:left;align-items:flex-start}}@media (max-width:480px){.container{gap:40px;padding:28px 24px 32px;font-size:17px}.about_me{gap:16px}.container--home>.about_me,.container--home>.section--work,.container--home>.section--case-studies,.container--home>.section--launch,.container--home>.section--projects{margin-bottom:48px}.experiments-cta-text{white-space:normal}.container--home>.section--experiments{margin-bottom:56px}.container--home>.section--other,.container--home>.section--contact{margin-bottom:48px}.experience-list{gap:18px}.list{gap:20px}.list-item{flex-direction:column;align-items:flex-start;gap:0}.other-works-list{gap:10px 20px}.other-works-list .list-item{flex-direction:row;align-items:center;gap:4px}.launch-title{font-size:18px}.launch-description{font-size:14px}.work-contribution-title,.work-beyond-title{font-size:19px}.work-beyond-item{font-size:17px}.work-headline{font-size:26px}.work-image-wrapper{border-radius:0;margin-left:-24px;margin-right:-24px}.list-item.link{align-items:center;gap:4px}.links{gap:12px}.dash{display:none}.video-grid{columns:1}}.theme-paper{--paper:#eef1ec;--paper-raised:#f7f9f5;--paper-ink:#1a1f1b;--paper-ink-soft:#4f5751;--paper-muted:#636c65;--paper-quiet:#7d877f;--paper-rule:#1a1f1b1f;--paper-lime:#d6f23f;--paper-mint:#b4edc8;--paper-mint-pale:#d8f2e0;--paper-grey:#e0e6e0;--chip-purple:#bba4f6;--chip-green:#80e39f;--chip-cyan:#98e2ef;--chip-pink:#f5a5dd;--font-command:var(--font-mono), ui-monospace, SFMono-Regular, Menlo, monospace;--accent:var(--paper-lime);--color-background:var(--paper);--color-foreground:var(--paper-ink);--color-white-text:var(--paper-ink);--color-subtext:var(--paper-ink-soft);--color-link:var(--paper-ink-soft);--color-link-hover:var(--paper-ink);--color-dash:var(--paper-rule);--color-year:var(--paper-muted);--color-interaction:var(--paper-ink);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;position:relative}body:has(.theme-paper){--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background-color:#eef1ec}.theme-paper ::selection{color:#1a1f1b;background-color:#d6f23f}.theme-paper .section--work{--accent:var(--chip-purple)}.theme-paper .section--projects{--accent:var(--chip-green)}.theme-paper .section--experiments{--accent:var(--chip-cyan)}.theme-paper .section--other{--accent:var(--chip-pink)}.theme-paper .section{gap:12px}.theme-paper .experience-link>.white_text,.theme-paper .project-list .list-item>.white_text,.theme-paper .other-works-list .list-item,.theme-paper .contact-link{background-color:var(--accent);color:var(--paper-ink);font-family:var(--font-command);transition:box-shadow .16s var(--ease-out), transform .16s var(--ease-out), opacity .22s var(--ease-out);font-size:15px;line-height:1.35}.theme-paper .experience-link>.white_text,.theme-paper .project-list .list-item>.white_text{white-space:nowrap;justify-self:start;padding:1px 6px 2px}.theme-paper .experience-link>.subtext,.theme-paper .project-list .subtext{color:var(--paper-ink);font-family:var(--font-command);font-size:15px;line-height:1.4}.theme-paper .experience-link>.year,.theme-paper .list-annotation{color:var(--paper-muted);white-space:nowrap;font-size:13px}.theme-paper .experience-list{gap:0}.theme-paper .experience-card{border-top:1px solid var(--paper-rule);gap:0}.theme-paper .experience-card:last-child{border-bottom:1px solid var(--paper-rule)}.theme-paper .experience-link{grid-template-columns:20px max-content minmax(0,1fr) max-content;gap:4px 12px;padding:12px 0}.theme-paper .experience-link>.dash{display:none}.theme-paper .experience-outcome{color:var(--paper-muted);transition:color .2s var(--ease-out);grid-area:2/2/auto/-1;font-size:14px;line-height:1.45}.theme-paper .project-list{gap:0}.theme-paper .project-list .list-item{grid-template-columns:max-content minmax(0,1fr) max-content;align-items:center;gap:14px;padding:11px 26px 11px 0}.theme-paper .project-list .subtext{grid-column:auto}.theme-paper .project-list .list-item>.arrow-icon{top:50%;transform:translateY(-50%)}.theme-paper .project-list .list-item:focus-visible{background-color:#0000}.theme-paper .other-works-list{gap:8px}.theme-paper .other-works-list .list-item,.theme-paper .contact-link{gap:4px;padding:2px 6px 3px 8px}.theme-paper .other-works-list .white_text,.theme-paper .contact-link-text{color:var(--paper-ink);font-family:var(--font-command);font-size:15px;text-decoration:none}.theme-paper .other-works-list .arrow-icon,.theme-paper .contact-link .arrow-icon{color:var(--paper-ink)}.theme-paper .contact-link--email[data-copied] path{stroke:var(--paper-ink)}.theme-paper .contact-links{gap:8px}.theme-paper .launch-feature{background:radial-gradient(340px circle at var(--launch-spot-x) var(--launch-spot-y), rgba(214, 242, 63, calc(.5 * var(--launch-light))), rgba(214, 242, 63, calc(.14 * var(--launch-light))) 45%, transparent 72%) padding-box, linear-gradient(var(--paper-raised) 0 0) padding-box, linear-gradient(rgba(26, 31, 27, calc(.12 + .22 * var(--launch-light))) 0 0) border-box;border-radius:2px}.theme-paper .launch-platforms{border-left-color:var(--paper-rule)}.theme-paper .launch-demo-button{color:var(--paper-ink);font-family:var(--font-command);border-color:#1a1f1b33;border-radius:2px;font-size:13px}.theme-paper .video-media,.theme-paper .work-image-wrapper{background:var(--paper-grey);box-shadow:inset 0 0 0 1px var(--paper-rule);border-radius:2px}.theme-paper .video-thumb,.theme-paper .video-thumb img,.theme-paper .video-thumb video{border-radius:2px}.theme-paper .video-label{color:var(--paper-muted);font-family:var(--font-command);font-size:12px}.theme-paper .video-corner-badge{background:var(--paper-lime);-webkit-backdrop-filter:none;backdrop-filter:none;color:var(--paper-ink);border:0;border-radius:0}.theme-paper .experiments-cta{box-shadow:none;background-color:#0000;border:0;border-radius:0;margin-left:-8px;padding:4px 8px}.theme-paper .experiments-cta-text{color:var(--paper-ink);font-family:var(--font-command);font-size:14px}.theme-paper .experiments-cta-arrow{color:var(--paper-ink);width:16px;height:16px}.theme-paper .site-footer--paper{border-top:1px solid var(--paper-rule);flex-flow:wrap;justify-content:space-between;align-self:stretch;gap:8px 24px;padding-top:16px}.theme-paper .footer-text{color:var(--paper-muted);font-family:var(--font-command);font-size:12px}.theme-paper .work-pager-card{border-color:var(--paper-rule);background:var(--paper-raised);box-shadow:none;border-radius:2px}.theme-paper .work-beyond-item:before{background:var(--paper-lime);border-radius:0;width:6px;height:6px;top:10px;box-shadow:inset 0 0 0 1px #1a1f1b40}.theme-paper .not-found-code{background-color:var(--paper-lime);font-family:var(--font-command);padding:6px 14px}.pixel-wipe{z-index:10000;grid-template-columns:repeat(var(--wipe-cols), 1fr);grid-auto-rows:var(--wipe-cell);pointer-events:none;animation:.56s linear forwards pixel-wipe-done;display:grid;position:fixed;inset:0;overflow:hidden}.pixel-wipe-cell{background-color:var(--wipe-tone);animation:pixel-wipe-out 1ms steps(1, end) var(--wipe-delay) forwards}@keyframes pixel-wipe-out{to{visibility:hidden}}@keyframes pixel-wipe-done{to{visibility:hidden}}.cmd-trigger{z-index:20;background:var(--paper-raised);color:var(--paper-ink);font-family:var(--font-command);cursor:pointer;animation:cmd-trigger-in .42s var(--ease-out) 1.4s both;transition:border-color .16s var(--ease-out), transform .16s var(--ease-out);border:1px solid #1a1f1b29;border-radius:2px;align-items:center;gap:8px;padding:6px 12px 6px 6px;font-size:12px;line-height:1.5;display:inline-flex;position:fixed;bottom:20px;right:20px;box-shadow:0 10px 24px -14px #1a1f1b73}.cmd-trigger:active{transform:scale(.97)}.cmd-kbd{background-color:var(--paper-lime);width:20px;height:20px;font-family:var(--font-command);place-items:center;font-size:12px;display:inline-grid}@keyframes cmd-trigger-in{0%{opacity:0;transform:translateY(8px)}}.cmd-dialog{background:var(--paper);width:min(680px,100vw - 24px);max-width:none;max-height:76dvh;color:var(--paper-ink);border:1px solid #1a1f1b2e;margin:12dvh auto auto;padding:0;overflow:hidden;box-shadow:0 32px 64px -24px #1a1f1b66}.cmd-dialog[open]{animation:cmd-in .18s var(--ease-out)}.cmd-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#eef1ecb8}@keyframes cmd-in{0%{opacity:0;transform:translateY(-6px)scale(.985)}}body:has(.cmd-dialog[open]){overflow:hidden}.cmd-panel{flex-direction:column;max-height:76dvh;display:flex}.cmd-input-row{border-bottom:1px solid var(--paper-rule);transition:box-shadow .16s var(--ease-out);align-items:center;gap:10px;padding:14px 18px;display:flex}.cmd-input-row:focus-within{box-shadow:inset 0 -2px 0 var(--paper-ink)}.cmd-prompt{background-color:var(--paper-lime);font-family:var(--font-command);flex-shrink:0;padding:3px 8px;font-size:16px}.cmd-input{min-width:0;color:var(--paper-ink);font-family:var(--font-command);background:0 0;border:0;outline:none;flex:1;font-size:16px}.cmd-input::placeholder{color:var(--paper-quiet)}.cmd-list{overscroll-behavior:contain;padding-bottom:8px;overflow-y:auto}.cmd-group-label{color:var(--paper-muted);letter-spacing:.08em;text-transform:uppercase;margin:0;padding:14px 18px 6px;font-size:11px}.cmd-option{--tone:var(--chip-purple);font-family:var(--font-command);cursor:pointer;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px 18px;font-size:14px;display:grid}.cmd-option+.cmd-option{border-top:1px solid var(--paper-rule)}.cmd-option[data-tone=go]{--tone:var(--chip-green)}.cmd-option[data-tone=say]{--tone:var(--chip-pink)}.cmd-option[aria-selected=true]{background-color:#d6f23f66}.cmd-option-prompt{color:var(--paper-quiet)}.cmd-verb{background-color:var(--tone);padding:1px 6px 2px}.cmd-words{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cmd-note{color:var(--paper-muted);font-family:var(--font-basier), sans-serif;white-space:nowrap;font-size:12px}.cmd-empty{color:var(--paper-muted);margin:0;padding:18px;font-size:14px}.cmd-footer{border-top:1px solid var(--paper-rule);color:var(--paper-muted);font-family:var(--font-command);justify-content:space-between;gap:12px;margin:0;padding:10px 18px;font-size:11px;display:flex}@media (hover:hover) and (pointer:fine){.theme-paper .avatar-interactive:hover{box-shadow:0 0 0 2px var(--paper-ink)}.theme-paper .experience-list:hover .experience-card:not(:hover){opacity:.5}.theme-paper .experience-link:hover>.white_text,.theme-paper .project-list .list-item:hover>.white_text,.theme-paper .other-works-list .list-item:hover,.theme-paper .contact-link:hover{color:var(--paper-ink);box-shadow:2px 2px 0 var(--paper-ink);transform:translate(-1px,-1px)}.theme-paper .experience-link:hover>.subtext,.theme-paper .project-list .list-item:hover .subtext{color:var(--paper-ink)}.theme-paper .experience-link:hover>.year,.theme-paper .experience-link:hover>.experience-outcome,.theme-paper .project-list .list-item:hover .list-annotation{color:var(--paper-ink-soft)}.theme-paper .project-list .list-item:hover{background-color:#0000}.theme-paper .project-list .list-item:hover>.arrow-icon{color:var(--paper-ink)}.theme-paper .other-works-list .list-item:hover .white_text,.theme-paper .contact-link:hover .contact-link-text{color:var(--paper-ink);opacity:1}.theme-paper .other-works-list .list-item:hover .arrow-icon,.theme-paper .contact-link:not(.contact-link--email):hover .arrow-icon,.theme-paper .contact-link--email:hover .copy-icon{color:var(--paper-ink)}.theme-paper .launch-demo-button:hover{border-color:var(--paper-ink);background:var(--paper-lime);color:var(--paper-ink)}.theme-paper .video-thumb:hover .video-media,.theme-paper button.work-figure:hover .work-image-wrapper{box-shadow:inset 0 0 0 1px #1a1f1b59}.theme-paper .video-thumb:hover .video-label,.theme-paper .back-link:hover{color:var(--paper-ink)}.theme-paper .experiments-cta:hover{background-color:var(--accent)}.theme-paper .work-pager-card:hover{background:var(--paper-raised);border-color:#1a1f1b59}.theme-paper .work-pager-card:hover .work-pager-arrow{color:var(--paper-ink)}.cmd-trigger:hover{border-color:var(--paper-ink);transform:translateY(-1px)}}@media (max-width:640px){.theme-paper .experience-link{grid-template-columns:20px minmax(0,1fr) max-content;row-gap:4px}.theme-paper .experience-link>.year{grid-area:1/3;justify-self:end}.theme-paper .experience-link>.subtext{grid-column:2/-1}.theme-paper .experience-outcome{grid-row:3}.cmd-option{grid-template-columns:auto minmax(0,1fr)}.cmd-option-prompt,.cmd-note,.cmd-footer>:last-child{display:none}.theme-paper .project-list .list-item{grid-template-columns:max-content minmax(0,1fr);row-gap:6px}.theme-paper .project-list .subtext{grid-area:2/1/auto/-1}.theme-paper .list-annotation{grid-area:1/2;justify-self:end}}
