:root{--canvas: #f3f3f3;--canvas-glass: #f3f3f3cc;--canvas-shade: #e6e6e6;--surface: #ffffff;--surface-glass: #ffffffb3;--ink: #000000;--ink-secondary: #6e6e6e;--ink-hover: #333333;--on-ink: #ffffff;--link: #0066cc;--space-1: 4px;--space-2: 8px;--space-4: 16px;--space-6: 24px;--space-12: 48px;--space-20: 80px;--space-40: 160px;--radius-md: 18px;--radius-pill: 980px;--shadow-rest: 4px 6px 16px -4px #00000014, 1px 1.5px 3px #0000000a;--shadow-lift: 12px 18px 40px -12px #00000026, 2px 3px 8px #0000000d;--focus-ring: 0 0 0 2px #ffffff, 0 0 0 4px #000000;--container: 980px;--measure: 640px;--measure-hero: 290px;--nav-height: 44px;--nav-inset: 16px;--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "SF Pro", "Helvetica Neue", Helvetica, Arial, sans-serif}.headline{font-family:var(--font-sans);font-size:48px;line-height:52px;font-weight:700;letter-spacing:-.003em}.title{font-family:var(--font-sans);font-size:24px;line-height:28px;font-weight:700;letter-spacing:.009em}.intro{font-family:var(--font-sans);font-size:21px;line-height:29px;font-weight:400;letter-spacing:.011em}.body{font-family:var(--font-sans);font-size:17px;line-height:25px;font-weight:400;letter-spacing:-.022em}.small{font-family:var(--font-sans);font-size:14px;line-height:20px;font-weight:400;letter-spacing:-.016em}.micro{font-family:var(--font-sans);font-size:12px;line-height:16px;font-weight:400;letter-spacing:-.01em}*,*:before,*:after{box-sizing:border-box}html{background:var(--surface);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;background:var(--surface);color:var(--ink-secondary);font-family:var(--font-sans)}h1,h2,h3,p,ol,ul{margin:0;padding:0}ol,ul{list-style:none}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible{outline:2px solid transparent;box-shadow:var(--focus-ring);border-radius:4px}.pf-container{width:100%;max-width:calc(var(--container) + 2 * var(--space-6));margin:0 auto;padding:0 var(--space-6)}.pf-nav{position:fixed;z-index:10;top:var(--nav-inset);left:0;right:0;margin:0 auto;width:calc(100% - 2 * var(--space-2));max-width:calc(var(--container) + 2 * var(--space-4));height:var(--nav-height);padding:0 var(--space-4);border-radius:var(--radius-pill);background:var(--surface-glass);-webkit-backdrop-filter:saturate(180%) blur(4px);backdrop-filter:saturate(180%) blur(4px);box-shadow:var(--shadow-rest)}.pf-nav__inner{height:100%;display:flex;align-items:center;justify-content:space-between;gap:12px}.pf-nav__name{color:var(--ink);font-weight:700}.pf-nav__end{display:flex;align-items:center;gap:var(--space-12)}.pf-nav__links{display:flex;gap:var(--space-12)}.pf-nav__langs{display:flex;gap:var(--space-2)}.pf-nav__link{color:var(--ink-secondary);transition:color .2s ease}.pf-nav__link:hover,.pf-nav__link[aria-current=page]{color:var(--ink)}.pf-hero{min-height:100vh;display:flex;overflow-x:clip;background:var(--canvas)}.pf-hero__inner{display:grid;grid-template-columns:minmax(var(--measure-hero),36fr) 64fr;flex:1}.pf-hero__copy{padding-top:var(--space-40)}.pf-hero__title{color:var(--ink)}.pf-hero__text{margin-top:var(--space-4);max-width:var(--measure-hero);color:var(--ink-secondary)}.pf-hero__photo{align-self:end;display:flex;min-width:0;padding-top:var(--space-12)}.pf-hero__photo img{width:auto;height:auto;max-height:calc(100svh - var(--nav-inset) - var(--nav-height) - var(--space-12));max-width:calc(100% + max(0px,(100vw - var(--container) - 2 * var(--space-6)) / 2));margin-left:auto}.pf-hero__photo svg{width:100%;max-width:540px;height:auto;margin:0 auto;filter:grayscale(1)}.pf-silhouette{fill:var(--canvas-shade)}.pf-section{padding:var(--space-20) 0}main>.pf-section:first-child{padding-top:var(--space-40)}.pf-project-page>.pf-section:first-child{padding-top:calc(var(--space-20) + var(--space-12))}.pf-section__head{max-width:var(--measure);margin-bottom:var(--space-12)}.pf-section__head--tight{margin-bottom:var(--space-12)}.pf-section__title{color:var(--ink)}.pf-section__intro{margin-top:var(--space-4);color:var(--ink-secondary)}.pf-section__more{display:inline-block;margin-top:var(--space-12)}.pf-career{display:grid;gap:var(--space-12)}.pf-career__item{display:grid;grid-template-columns:1fr 3fr;gap:var(--space-6)}.pf-career__when{color:var(--ink-secondary);padding-top:6px}.pf-career__role{color:var(--ink)}.pf-career__org{margin-top:var(--space-2);color:var(--ink-secondary)}.pf-career__desc{margin-top:var(--space-4);max-width:var(--measure);color:var(--ink-secondary)}.pf-toggle{display:inline-flex;align-items:center;gap:var(--space-1);margin-top:var(--space-4);padding:0;border:0;background:none;color:var(--ink);font:inherit;letter-spacing:inherit;cursor:pointer}.pf-toggle__label{display:inline-grid;text-align:left}.pf-toggle__label>*{grid-area:1 / 1}.pf-toggle__label>[aria-hidden]{visibility:hidden}.pf-toggle__chevron{flex:none;width:12px;height:12px;transition:transform .4s cubic-bezier(.2,.7,.2,1)}.pf-toggle[aria-expanded=true] .pf-toggle__chevron{transform:rotate(90deg)}.pf-toggle:hover{text-decoration:underline;text-underline-offset:3px}.pf-career__panel{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .45s cubic-bezier(.2,.7,.2,1),opacity .3s ease}.pf-career__item.is-open .pf-career__panel{grid-template-rows:1fr;opacity:1;transition:grid-template-rows .45s cubic-bezier(.2,.7,.2,1),opacity .4s ease .1s}.pf-career__panel-inner{min-height:0;overflow:hidden}.pf-career__panel-inner>:first-child{margin-top:var(--space-6)}.pf-career__projects{margin-top:var(--space-6)}.pf-career__projects .small{margin-bottom:var(--space-2);color:var(--ink-secondary)}.pf-list{display:grid;gap:var(--space-4);max-width:var(--measure);color:var(--ink-secondary)}.pf-section--head{padding-bottom:var(--space-20)}.pf-section--tight{padding-top:var(--space-20)}.pf-detail__meta{margin-bottom:var(--space-4);color:var(--ink-secondary)}.pf-detail__links{margin-top:var(--space-6)}.pf-detail__media{margin-top:var(--space-20);aspect-ratio:16 / 10;border-radius:var(--radius-md);background:var(--canvas-shade);overflow:hidden;box-shadow:var(--shadow-rest)}.pf-detail__media img{width:100%;height:100%;object-fit:cover}.pf-detail__device{flex:1 1 auto;min-height:0;height:calc(min(100vw - 2 * var(--space-6),var(--container)) / 1.5);container-type:size}.pf-detail__device .pf-device{width:min(100cqw,100cqh * 1.5);height:auto;margin:0 auto}.pf-project__device .pf-device{width:100%;height:auto}.pf-project__device{width:84%}@supports (corner-shape: squircle){.pf-detail__media{corner-shape:superellipse(1.5)}}.pf-section--showcase>.pf-container{display:flex;flex-direction:column;max-height:max(calc(100svh - var(--space-20) - var(--space-12) - var(--space-6)),640px)}.pf-section--showcase .pf-section__head{flex-shrink:0}.pf-showcase{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;margin:0}.pf-showcase__fit{flex:1 1 auto;min-height:0;height:calc(min(100vw - 2 * var(--space-6),var(--container))*.672);container-type:size}.pf-showcase__stage{position:relative;width:min(100cqw,100cqh / .672);margin:0 auto;aspect-ratio:1 / .672}.pf-showcase__mac{position:absolute;left:0;bottom:0;width:79%}.pf-showcase__mac .pf-device{width:100%;height:auto}.pf-showcase__ipod{position:absolute;right:0;bottom:0;width:21.09375%;transform:translate(calc(100% * 84 / 750),calc(100% * 98 / 1134))}.pf-showcase__note{flex-shrink:0;margin-top:var(--space-6);color:var(--ink-secondary)}.pf-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-12) var(--space-6)}.pf-stat__note{min-height:20px;margin-bottom:var(--space-1);color:var(--ink-secondary)}.pf-stat__value{color:var(--ink);font-family:var(--font-sans);font-size:72px;line-height:1;font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.pf-stat__label{margin-top:var(--space-4);max-width:240px;color:var(--ink-secondary)}.pf-sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.pf-project-page{overflow-x:clip}.pf-carousel{--gutter: max(var(--space-6), calc((100vw - var(--container)) / 2));--card: min(var(--container), calc(100vw - 2 * var(--gutter) - 48px))}.pf-carousel__track{display:flex;gap:var(--space-4);margin:0 calc(50% - 50vw);padding:0 calc(100vw - var(--gutter) - var(--card)) 0 var(--gutter);overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);overscroll-behavior-x:contain;scrollbar-width:none}.pf-carousel__track::-webkit-scrollbar{display:none}.pf-carousel__track:focus-visible{outline:2px solid transparent;box-shadow:none}.pf-carousel__track:focus-visible .pf-slide{box-shadow:var(--focus-ring)}.pf-slide{flex:0 0 var(--card);scroll-snap-align:start;display:flex;flex-direction:column;height:760px;margin:0;padding:var(--space-12) var(--space-12) 0;border-radius:var(--radius-md);background:var(--canvas);overflow:hidden}.pf-slide__caption{max-width:560px;min-height:86px}.pf-slide__title{color:var(--ink)}.pf-slide__text{margin-top:var(--space-2);color:var(--ink-secondary)}.pf-slide__media{flex:1;min-height:0;padding:var(--space-6) 0 var(--space-12)}.pf-slide__frame{height:100%;max-width:100%;margin:0 auto}.pf-slide__frame--video{aspect-ratio:1280 / 840;border-radius:12px;overflow:hidden;background:var(--ink);box-shadow:var(--shadow-rest)}.pf-slide__frame--device{width:fit-content}.pf-device{position:relative;height:100%;max-width:100%}.pf-device__screen{position:absolute;display:grid;place-items:center;overflow:hidden;background:#b9b3ab center / cover no-repeat}.pf-device__window{width:76%;aspect-ratio:1280 / 840}.pf-device__window video,.pf-device__window img{display:block;width:100%;height:100%;border-radius:1.8%/2.75%;box-shadow:0 12px 32px -8px #00000059,0 2px 6px #0000002e}.pf-device__slides{position:relative;width:100%;height:100%;overflow:hidden;border-radius:1.8%/2.75%;box-shadow:0 12px 32px -8px #00000059,0 2px 6px #0000002e}.pf-device__window .pf-device__slides img{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;border-radius:0;box-shadow:none;opacity:0;transition:opacity 1.4s cubic-bezier(.45,0,.25,1)}.pf-device__window .pf-device__slides img[data-previous]{z-index:1;opacity:1;transition:none}.pf-device__window .pf-device__slides img[data-active]{z-index:2;opacity:1}.pf-device__frame{position:absolute;max-width:none;pointer-events:none}.pf-slide__frame--video video,.pf-slide__frame--image img{display:block;width:100%;height:100%;object-fit:cover}@supports (corner-shape: squircle){.pf-slide{corner-shape:superellipse(1.5)}}.pf-carousel__controls{display:flex;justify-content:center;align-items:center;gap:var(--space-4);margin-top:var(--space-6)}.pf-carousel__dots{display:flex;align-items:center;height:56px;padding:0 var(--space-4);border-radius:var(--radius-pill);background:var(--canvas)}.pf-carousel__dot{display:flex;align-items:center;height:100%;padding:0 6px;border:0;background:none;cursor:pointer}.pf-carousel__dot:focus-visible{border-radius:var(--radius-pill)}.pf-carousel__bar{position:relative;display:block;width:8px;height:8px;border-radius:4px;background:var(--ink-secondary);opacity:.55;overflow:hidden;transition:width .4s cubic-bezier(.2,.7,.2,1),opacity .2s ease}.pf-carousel__dot:hover .pf-carousel__bar{opacity:.8}.pf-carousel__dot[aria-current=true] .pf-carousel__bar{width:40px;opacity:1;background:var(--canvas-shade)}.pf-carousel__fill{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--ink-secondary);transform-origin:left center}.pf-carousel__fill.is-running{animation:pf-carousel-fill var(--slide-ms) linear both}@keyframes pf-carousel-fill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.pf-carousel__play{display:grid;place-items:center;width:56px;height:56px;padding:0;border:0;border-radius:50%;background:var(--canvas);color:var(--ink);cursor:pointer;transition:background-color .2s ease}.pf-carousel__play:hover{background:var(--canvas-shade)}.pf-carousel__play:focus-visible{border-radius:50%}.pf-carousel__play svg{fill:currentColor}.pf-story,.pf-rows,.pf-timeline{margin:0;padding:0;list-style:none}.pf-statement{max-width:820px}.pf-statement p{margin:0;font-size:32px;line-height:40px;font-weight:600;letter-spacing:.004em;color:var(--ink-secondary)}.pf-statement p+p{margin-top:var(--space-6)}.pf-statement strong{font-weight:600;color:var(--ink)}.pf-spec__group{display:grid;grid-template-columns:160px 1fr;gap:var(--space-6);padding:var(--space-6) 0;border-top:1px solid var(--canvas-shade)}.pf-spec__group:last-child{border-bottom:1px solid var(--canvas-shade)}.pf-spec__name{margin:0;color:var(--ink-secondary);font-weight:400}.pf-spec__list{display:grid;gap:var(--space-4);margin:0}.pf-spec__row{display:grid;grid-template-columns:240px 1fr;gap:var(--space-6)}.pf-spec__tool{color:var(--ink);font-weight:600}.pf-spec__role{margin:0;color:var(--ink-secondary)}.pf-rows{display:grid}.pf-rows--two{grid-template-columns:1fr 1fr;column-gap:var(--space-12)}.pf-rows__item{padding:var(--space-4) 0;border-top:1px solid var(--canvas-shade)}.pf-rows__name{color:var(--ink);font-weight:600}.pf-rows__text{margin-top:2px;color:var(--ink-secondary)}.pf-split{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-12)}.pf-split__title{margin-bottom:var(--space-4);color:var(--ink)}.pf-split__rules,.pf-after__points{margin-top:var(--space-20)}.pf-timeline__item{display:grid;grid-template-columns:160px 1fr;gap:var(--space-6);padding:var(--space-6) 0;border-top:1px solid var(--canvas-shade)}.pf-timeline__item:last-child{border-bottom:1px solid var(--canvas-shade)}.pf-timeline__date{color:var(--ink-secondary)}.pf-timeline__item[data-milestone] .pf-timeline__date,.pf-timeline__title{color:var(--ink);font-weight:600}.pf-timeline__text{margin-top:2px;max-width:var(--measure);color:var(--ink-secondary)}.pf-story__chapter{display:grid;grid-template-columns:240px 1fr;column-gap:var(--space-6);padding:var(--space-6) 0;border-top:1px solid var(--canvas-shade)}.pf-story__chapter:last-child{border-bottom:1px solid var(--canvas-shade)}.pf-story__title{grid-row:1 / span 2;color:var(--ink);font-weight:600}.pf-story__text{grid-column:2;max-width:var(--measure);color:var(--ink-secondary)}.pf-story__points{grid-column:2;display:grid;gap:var(--space-2);margin:var(--space-4) 0 0;padding:0;list-style:none;max-width:var(--measure);color:var(--ink-secondary)}.pf-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-6) var(--space-12);margin:0}.pf-story+.pf-facts{margin-top:var(--space-20)}.pf-facts dt{color:var(--ink-secondary)}.pf-facts dd{margin:var(--space-2) 0 0;color:var(--ink)}.pf-next{margin-top:var(--space-20)}.pf-next .small{color:var(--ink-secondary)}.pf-next__link{display:inline-block;margin-top:var(--space-2)}.pf-next__all{display:block;width:fit-content;margin-top:var(--space-6)}.pf-projects{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--space-6);row-gap:var(--space-20)}.pf-project{display:block}.pf-project__media{aspect-ratio:4 / 3;border-radius:var(--radius-md);background:var(--canvas-shade);overflow:hidden;box-shadow:var(--shadow-rest);transition:box-shadow .4s ease,transform .4s ease}.pf-project__media>img{width:100%;height:100%;object-fit:cover}.pf-project__devices{display:grid;place-items:center;height:100%;background:var(--canvas)}.pf-project__devices .pf-showcase__stage{width:84%}a.pf-project:hover .pf-project__media,.pf-project.is-hover .pf-project__media{box-shadow:var(--shadow-lift);transform:translate(-1px,-2px)}.pf-project:focus-visible{border-radius:var(--radius-md)}.pf-project__title{margin-top:var(--space-6);color:var(--ink)}.pf-project__desc{margin-top:var(--space-2);color:var(--ink-secondary)}.pf-project__more{display:inline-block;margin-top:var(--space-4);color:var(--link)}.pf-project:hover .pf-project__more,.pf-project.is-hover .pf-project__more{text-decoration:underline;text-underline-offset:3px}.pf-btn{display:inline-flex;align-items:center;min-height:44px;padding:0 22px;border:0;border-radius:var(--radius-pill);background:var(--ink);color:var(--on-ink);box-shadow:var(--shadow-rest);font:inherit;cursor:pointer;transition:background-color .2s ease}.pf-btn:hover,.pf-btn.is-hover{background:var(--ink-hover)}.pf-btn:focus-visible{border-radius:var(--radius-pill)}.pf-link{color:var(--link)}.pf-link:hover,.pf-link.is-hover{text-decoration:underline;text-underline-offset:3px}.pf-link:after{content:" ›"}.pf-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-4) var(--space-6)}.pf-footer{padding:var(--space-6) 0 var(--space-12);color:var(--ink-secondary)}.pf-crumbs{margin-bottom:var(--space-4)}.pf-crumbs ol{display:flex;flex-wrap:wrap;gap:0 var(--space-2);margin:0;padding:0;list-style:none}.pf-crumbs li+li:before{content:"›";margin-right:var(--space-2);color:var(--ink-secondary)}.pf-crumbs a{color:var(--link)}.pf-crumbs a:hover{text-decoration:underline;text-underline-offset:3px}@supports (corner-shape: squircle){.pf-project__media{corner-shape:superellipse(1.5)}}@media (max-width: 734px){.pf-section{padding:var(--space-12) 0}.pf-section__head{margin-bottom:var(--space-6)}.headline{font-size:32px;line-height:36px}.pf-nav{padding:0 12px}.pf-nav__name{white-space:nowrap}.pf-nav__end,.pf-nav__links,.pf-nav__langs{gap:12px}.pf-hero__inner{grid-template-columns:1fr}.pf-hero__photo img{width:100%;max-width:540px;max-height:none;margin:0 auto}.pf-hero__copy{padding-top:calc(var(--space-20) + var(--nav-inset) + var(--nav-height))}main>.pf-section:first-child,.pf-project-page>.pf-section:first-child{padding-top:calc(var(--space-20) + var(--nav-inset) + var(--nav-height))}.pf-career__item{grid-template-columns:1fr;gap:var(--space-2)}.pf-stats{grid-template-columns:1fr 1fr}.pf-split,.pf-rows--two,.pf-story__chapter{grid-template-columns:1fr}.pf-story__title{grid-row:auto;margin-bottom:2px}.pf-story__text,.pf-story__points{grid-column:auto}.pf-statement p{font-size:24px;line-height:30px}.pf-spec__group,.pf-spec__row,.pf-timeline__item{grid-template-columns:1fr;gap:2px}.pf-spec__group{gap:var(--space-4)}.pf-projects{grid-template-columns:1fr;row-gap:var(--space-12)}.pf-section--head{padding-bottom:var(--space-12)}.pf-section--tight{padding-top:var(--space-12)}.pf-section--showcase>.pf-container{display:block;max-height:none}.pf-detail__device{height:auto;container-type:normal}.pf-detail__device .pf-device{width:100%}.pf-showcase__fit{height:auto;container-type:normal}.pf-showcase__stage{width:auto;aspect-ratio:1 / .78}.pf-showcase__mac{width:88%;bottom:auto;top:0}.pf-showcase__ipod{width:calc(27% * 750 / 640)}.pf-stat__value{font-size:56px}.pf-carousel{--card: calc(100vw - 2 * var(--gutter) - 32px)}.pf-slide{height:auto;padding:var(--space-6) var(--space-6) 0}.pf-slide__media{padding:var(--space-6) 0}.pf-slide__caption{min-height:0}.pf-slide__frame,.pf-device{width:100%;height:auto}.pf-carousel__dots{height:48px}.pf-carousel__play{width:48px;height:48px}}@media (max-width: 389px){.pf-nav__name{font-size:12px;line-height:14px;white-space:normal}}[data-reveal]{opacity:0;transform:translateY(16px);transition:opacity .7s ease,transform .9s cubic-bezier(.2,.7,.2,1);transition-delay:var(--reveal-delay, 0ms)}[data-reveal][data-revealed]{opacity:1;transform:none}.pf-hero__photo[data-reveal]{transform:translateY(32px);transition-duration:1s,1.2s}.pf-hero__photo[data-reveal][data-revealed]{transform:none}@media (prefers-reduced-motion: no-preference){@view-transition{navigation: auto;}.pf-nav{view-transition-name:pf-nav}::view-transition-old(root){animation:pf-fade-out .28s ease both}::view-transition-new(root){animation:pf-fade-in .28s ease both}}@keyframes pf-fade-out{to{opacity:0}}@keyframes pf-fade-in{0%{opacity:0}}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}[data-reveal]{opacity:1;transform:none}}
