@font-face{font-family:Geist;font-style:normal;font-weight:400;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:400;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:400;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:400;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:400;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;font-style:normal;font-weight:500;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:500;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:500;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:500;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:500;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%}._53Cw6a_className{font-family:Geist,Geist Fallback;font-style:normal}._53Cw6a_variable{--font-geist-sans:"Geist", "Geist Fallback"}
:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-canvas:#fafafa;--color-footer:#fafafa;--color-ink:#1b1b1b;--color-muted:#1b1b1bb3;--color-project:#ebebeb;--color-control:#656565;--color-control-stroke-top:#fff3;--color-control-stroke-bottom:#9993;--font-family:var(--font-geist-sans), "Geist", Arial, sans-serif;--content-width:587px;--page-gutter:16px;--radius-control:999px;--radius-project:12px;--navigation-control-height:28px}*{box-sizing:border-box}html{background:var(--color-canvas);color:var(--color-ink);font-family:var(--font-family);-webkit-font-smoothing:antialiased;text-rendering:geometricprecision;font-size:16px;font-weight:400}body{background:var(--color-canvas);min-width:320px;margin:0}button,a{color:inherit;font:inherit}button{border:0}a{text-decoration:none}img{display:block}p,h1,h2,h3{margin:0}:focus-visible{outline-offset:3px;outline:2px solid #1b1b1b}.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}.portfolio{isolation:isolate;background:var(--color-canvas);min-height:100%;padding-top:100svh;position:relative}.intro-layer{--intro-cover:0;z-index:0;background:var(--color-canvas);justify-content:center;width:100%;height:100svh;display:flex;position:fixed;inset:0;overflow:hidden}.intro-layer>.intro-panel{opacity:calc(1 - var(--intro-cover));will-change:opacity}.intro-panel{width:min(var(--content-width), calc(100% - 32px));background:var(--color-canvas);border-left:1px solid #0000001a;border-right:1px solid #0000001a;flex-direction:column;height:100%;padding:61px 0 24px;display:flex;overflow:hidden;box-shadow:-1px 0 #fff,1px 0 #fff}.intro-body{flex:1;align-items:center;width:100%;min-height:0;padding:24px 16px;display:flex}.intro-content{flex-direction:column;gap:70px;width:100%;display:flex}.intro-identity,.intro-copy{font-size:14px;line-height:1.4}.intro-identity{flex-direction:column;gap:2px;display:flex}.intro-identity h1{font-size:inherit;letter-spacing:-.28px;font-weight:400}.intro-identity p{color:var(--color-muted)}.intro-copy{flex-direction:column;gap:12px;display:flex}.intro-lead{width:100%}.intro-copy>p{max-width:560px}.text-link,.intro-writing-link{color:var(--color-ink);text-underline-offset:3px;-webkit-text-decoration:underline dashed;text-decoration:underline dashed;text-decoration-thickness:1px;transition:text-decoration-color .2s}.text-link:hover,.intro-writing-link:hover{text-decoration-style:solid}.intro-actions{align-items:center;gap:8px;min-height:33px;display:flex;position:relative}.foreground-layer{z-index:1;isolation:isolate;background:var(--color-canvas);flex-direction:column;min-height:100svh;display:flex;position:relative;box-shadow:0 -.5px #fff}.site-header{z-index:20;pointer-events:none;justify-content:center;align-items:center;width:100%;height:61px;display:flex;position:fixed;top:0;left:0}.site-nav{pointer-events:auto;flex:0 0 375px;width:375px;height:32px;position:relative}.site-nav--project{flex:none;justify-content:center;align-items:center;gap:6px;width:auto;display:flex}@media (max-width:419px){.site-nav:not(.site-nav--project){translate:calc(var(--navigation-progress,0) * -16px) 0}}.nav-surface{border-radius:var(--radius-control);background:linear-gradient(180deg, #0000, #0003), var(--color-control);border:.5px solid #0000;transition:box-shadow .18s,filter .18s;position:relative;overflow:hidden;box-shadow:0 4px 5px 1px #0000001a,0 2px 2px #00000040,0 0 0 .5px #0000008c}.nav-surface:before,.nav-surface:after{border-radius:inherit;content:"";pointer-events:none;position:absolute;inset:-.5px}.nav-surface:before{z-index:2;background:linear-gradient(180deg, var(--color-control-stroke-top), var(--color-control-stroke-bottom));-webkit-mask-composite:xor;padding:.5px;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.nav-surface:after{z-index:2;box-shadow:inset 0 2px 1px #ffffff26,inset 0 -1.5px 1px #00000026}.nav-circle{width:var(--navigation-control-height);height:var(--navigation-control-height);flex:0 0 var(--navigation-control-height);color:#fff;justify-content:center;align-items:center;display:flex}.nav-link{cursor:pointer;display:block;position:relative}.nav-link:after{content:"";position:absolute;inset:-8px -2px}.nav-link:hover>.nav-circle.nav-surface{filter:brightness(1.12)}.nav-link:active>.nav-circle.nav-surface{filter:brightness(.86);box-shadow:0 1px 1.5px #00000014,0 .5px .5px #0003,0 0 0 .5px #0000008c}.site-nav:not(.site-nav--project)>.nav-link{position:absolute;top:2px;left:0}.nav-icon{z-index:1;flex:0 0 14px;width:14px;height:14px;display:block;position:relative}.nav-icon--logo>span{transform-origin:50%;will-change:transform;width:14px;height:14px;display:block}.nav-segments{height:var(--navigation-control-height);position:absolute;top:2px;left:0}.nav-segments-content{align-items:center;height:27px;display:flex;position:absolute;top:1px;left:3px}.nav-segments-content--intro{pointer-events:none;top:-.5px;left:1.5px}.nav-segments-content>a,.nav-project-tab,.nav-about{border-radius:var(--radius-control);color:#fff;letter-spacing:-.24px;white-space:nowrap;text-shadow:.5px .5px 1px #0000004d,.3px .3px .4px #0003;justify-content:center;align-items:center;height:27px;font-size:12px;line-height:1.4;display:flex}.nav-segments-content--intro>a{pointer-events:auto;gap:4px;width:74px;padding:5px 12px;transition:background-color .18s,box-shadow .18s}.nav-segments-content--intro>a:hover{background-color:#ffffff14;box-shadow:inset 0 0 0 .3px #ffffff29}.nav-segments-content--intro>a svg,.nav-about svg{flex:0 0 14px;width:14px;height:14px}.nav-segments-content--works{--nav-tab-width:121px;width:calc(2 * var(--nav-tab-width));height:23px;top:50%;left:2.5px;transform:translateY(-50%)}.nav-project-tab{z-index:1;width:var(--nav-tab-width);flex:0 0 var(--nav-tab-width);cursor:pointer;background:0 0;height:23px;padding:3px 10px;transition:background-color .18s;position:relative}.nav-project-tab[aria-selected=false]:hover{background-color:#ffffff14}.nav-tab-indicator{width:var(--nav-tab-width);border-radius:var(--radius-control);pointer-events:none;background:#fff3;height:100%;transition:transform .18s cubic-bezier(.22,1,.36,1);position:absolute;top:0;left:0;box-shadow:inset 0 0 0 .3px #fff3,inset 0 0 2px #ffffff5c,inset 0 0 4px #ffffff29}.nav-segments-content--works[data-active=recent] .nav-tab-indicator{transform:translateX(var(--nav-tab-width))}.nav-about{z-index:1;height:var(--navigation-control-height);cursor:pointer;gap:0;position:absolute;top:2px;left:0;overflow:hidden}.nav-about-surface{z-index:-1;position:absolute;inset:0}.nav-about-label{flex:none;overflow:hidden}.nav-about-label>span{padding-left:4px;display:block}.nav-title{border-radius:var(--radius-control);background:linear-gradient(180deg, #0000, #0003), var(--color-control);color:#fff;white-space:nowrap;text-shadow:.5px .5px 1px #00000040;justify-content:center;align-items:center;min-width:103px;height:28px;padding:5px 10px;font-size:12px;line-height:1.4;display:flex;box-shadow:inset 0 0 12px #ffffff40,0 0 0 .5px #0000008c}.pill-button{border-radius:var(--radius-control);white-space:nowrap;cursor:pointer;flex:none;justify-content:center;align-items:center;gap:4px;height:33px;padding:6px 12px 6px 14px;font-size:14px;line-height:1.4;transition:box-shadow .18s,filter .18s,transform .12s;display:inline-flex;position:relative;overflow:hidden}.pill-button svg{width:14px;height:14px}.pill-button--dark{color:#fff;text-shadow:.5px .5px 1px #0000004d,.3px .3px .4px #0003;background:linear-gradient(#0000,#0006),#636363;border:.5px solid #0003;box-shadow:0 0 0 .5px #d6d6d6,inset 0 1.5px .6px #ffffff26,inset 0 -1px .5px #000}.pill-button--dark:hover{filter:brightness(1.12)}.pill-button--dark:active{filter:brightness(.86);transform:translateY(.5px);box-shadow:0 0 0 .5px #d6d6d6,inset 0 1.5px 3px #0000008c}.pill-button--light{color:#000;text-shadow:.5px .5px 1px #00000040;background:linear-gradient(#fff3 50%,#e6e6e633),#fff;border:.5px solid #00000026;box-shadow:0 0 0 .5px #f0f0f0,inset 0 .5px .5px #fff9,inset 0 -.5px .5px #0003}.pill-button--light:hover{filter:brightness(.985);box-shadow:0 0 0 .5px #e4e4e4,inset 0 1px 1px #fff,inset 0 -1px 1px #00000029}.pill-button--light:active{filter:brightness(.95);transform:translateY(.5px)}.copy-email-swap{display:grid}.copy-email-state{grid-area:1/1;justify-content:center;align-items:center;gap:4px;transition:opacity .24s,filter .24s,transform .24s cubic-bezier(.22,1,.36,1);display:inline-flex}.copy-email-state--done{opacity:0;filter:blur(4px);transform:translateY(5px)}.copy-email[data-copied] .copy-email-state--idle{opacity:0;filter:blur(4px);transform:translateY(-5px)}.copy-email[data-copied] .copy-email-state--done{opacity:1;filter:blur();transform:none}.social-links{align-items:center;gap:2px;display:flex}.social-button{border-radius:var(--radius-control);cursor:pointer;flex:0 0 29px;place-items:center;width:29px;height:29px;display:grid;position:relative}.social-button img{object-fit:contain;width:14px;height:14px;transition:transform .12s,filter .18s,opacity .12s}.social-button:hover img{filter:brightness(0)}.social-button:active img{opacity:.75;transform:translateY(.5px)}.pill-button img{object-fit:contain;width:14px;height:14px}.works-section{z-index:1;background:var(--color-canvas);width:100%;padding:120px 0 0;position:relative;overflow:hidden;box-shadow:inset 0 .5px #0000001a,0 0 0 .5px #fff}.works-grid{width:100%;max-width:calc(1408px + 2 * var(--page-gutter));padding:24px var(--page-gutter);grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:auto;gap:32px 16px;margin-inline:auto;animation:.26s cubic-bezier(.22,1,.36,1) both works-grid-in;display:grid}@keyframes works-grid-in{0%{opacity:0}}.works-grid--products{max-width:calc(1100px + 2 * var(--page-gutter));grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:auto;gap:32px 16px}.works-grid--products .project-card{grid-area:auto;max-width:none}.works-grid--products .project-image{aspect-ratio:3420/1906}@media (max-width:767px){.works-grid--products{grid-template-columns:1fr}}.project-card{flex-direction:column;align-self:start;gap:12px;width:100%;min-width:0;max-width:none;display:flex;position:relative}.project-card-link:after{z-index:1;content:"";position:absolute;inset:0}.project-card-link:focus-visible{outline:none}.project-card-link:focus-visible:after{outline:2px solid var(--color-ink);outline-offset:4px}.project-card--1{grid-area:1/1}.project-card--2{grid-area:1/2}.project-card--3{grid-area:1/3}.project-card--4{grid-area:2/2}.project-card--5{grid-area:3/1}.project-card--6{grid-area:3/2}.project-card--7{grid-area:3/3}.project-card--8{grid-area:4/2}.recent-card--1{grid-area:1/2}.recent-card--2{grid-area:1/4}.recent-card--3{grid-area:2/1}.recent-card--4{grid-area:2/2}.recent-card--5{grid-area:3/3}.recent-card--6{grid-area:4/1}.recent-card--7{grid-area:4/3}.project-meta{color:#000;white-space:nowrap;flex-direction:column;flex:0 0 36px;gap:2px;height:36px;font-size:12px;line-height:1.4;display:flex}.project-meta h3{letter-spacing:.24px;font-size:12px;font-weight:400}.project-meta div{justify-content:space-between;align-items:center;display:flex}.project-meta p{opacity:.6;letter-spacing:-.24px;text-overflow:ellipsis;overflow:hidden}.project-meta time{opacity:.6;letter-spacing:-.2px;font-size:10px}.project-image{aspect-ratio:343/300;border-radius:var(--radius-project);background:var(--color-project);color:#000;letter-spacing:.24px;border:1px solid #fff9;flex:none;place-items:center;width:100%;height:auto;font-size:12px;line-height:1.4;display:grid;position:relative;overflow:hidden}.project-image--media{border:0;border-radius:0}.project-image--media:after{content:"";pointer-events:none;transform-origin:0 0;border:1px solid #00000026;width:200%;height:200%;position:absolute;top:0;left:0;transform:scale(.5)}.project-cover-image{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.contact-footer{z-index:2;background:var(--color-footer);flex-direction:column;flex:none;min-height:100vh;display:flex;position:relative}.contact-area{min-height:0;padding:84px var(--page-gutter) 132px;background:var(--color-footer);flex-direction:column;flex:auto;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden;box-shadow:0 0 0 .5px #fff}.contact-glass{z-index:0;pointer-events:none;width:100%;height:100%;display:block;position:absolute;inset:0}.contact-glass-fallback{z-index:0;color:var(--color-ink);pointer-events:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.contact-glass-fallback[hidden]{display:none}.contact-pill{z-index:1;background:linear-gradient(90deg,#63636314,#63636314),linear-gradient(#fff3 50%,#e6e6e633),#fff;border-radius:60px;justify-content:space-between;align-items:center;gap:12px;width:auto;max-width:100%;margin-top:calc(2.32*min(160px,34.4828vw) + 80px);padding:8px;display:flex;position:relative}.contact-pill p{white-space:nowrap;color:#000;text-shadow:.5px .5px 1px #00000040,.3px .3px .4px #00000040;flex:none;padding:0 0 0 12px;font-size:14px;line-height:1.4}.contact-pill .pill-button--dark{text-shadow:.5px .5px 1px #000000d9,.3px .3px .4px #000;box-shadow:0 0 0 .5px #d6d6d614,inset 0 1px 1px #ffffff26,inset 0 -1px .5px #000}.contact-note--phone{display:none}.footer-socials{background:var(--color-footer);flex:0 0 77px;place-items:center;height:77px;padding:24px;display:grid}.page-shell{min-height:100svh;padding:100px var(--page-gutter) 80px}.page-panel{width:min(var(--content-width), 100%);flex-direction:column;gap:32px;margin-inline:auto;font-size:14px;line-height:1.4;display:flex}.page-panel h1{letter-spacing:-.28px;font-size:14px;font-weight:400}.page-panel .muted{color:var(--color-muted)}.page-copy{flex-direction:column;gap:12px;display:flex}.project-hero{aspect-ratio:587/380;border-radius:var(--radius-project)}.project-details{grid-template-columns:110px 1fr;gap:10px 16px;font-size:12px;display:grid}.project-details dt{opacity:.6}.project-details dd{margin:0}.project-actions{gap:8px;display:flex}@media (max-width:1023px){.works-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:auto;row-gap:32px}.project-card{max-width:none}.project-card[class*=--]{grid-area:auto}}@media (max-width:767px){.intro-panel{width:100%;box-shadow:none;border:0}.intro-content{gap:clamp(36px,8vh,70px)}.intro-actions{flex-wrap:wrap}.works-section{padding:80px 0 0}.works-grid{grid-template-columns:1fr}.contact-area{padding:56px var(--page-gutter) 104px}.contact-note--wide{display:none}.contact-note--phone{display:inline}}@media (max-width:479px){.intro-copy{font-size:13px}.contact-pill p{font-size:12px}}@media (prefers-reduced-motion:reduce){.works-grid{animation:none}.nav-surface,.pill-button,.copy-email-state,.social-button svg{transition:none}}.project-meta time.project-soon{opacity:.62}.about-page{background:var(--color-canvas);min-width:320px;color:var(--color-ink);font-size:14px;line-height:1.4}.about-main{z-index:2;background:var(--color-canvas);width:100%;position:relative}.introduction{justify-content:center;width:100%;padding-block:120px;display:flex;overflow:hidden}.introduction-content{flex-direction:column;gap:80px;width:744px;display:flex}.introduction-label{flex-direction:column;width:488px;display:flex}.introduction-title{font:inherit;white-space:nowrap}.introduction-label>p{color:#1b1b1bcc;width:420px}.about-copy{flex-direction:column;align-items:flex-start;gap:20px;width:744px;display:flex}.about-copy p{width:100%;max-width:560px}.experience-section{justify-content:center;width:100%;padding-block:120px;display:flex;overflow:hidden}.experience-content{width:852px;padding-inline:32px}.experience-content>h2{color:#1b1b1b66;font:inherit;padding-inline:20px}.experience-timeline{align-items:stretch;width:788px;margin-top:20px;display:flex}.experience-track{background:linear-gradient(#1b1b1b26,#1b1b1b26) 10px 0/1px 100% no-repeat;flex:0 0 20px;width:20px}.experience-list{width:768px;margin:0;padding:0;list-style:none}.experience-row{align-items:flex-start;gap:16px;width:100%;padding-block:12px;display:flex}.experience-row:first-child{padding-top:0}.experience-list>.experience-row{position:relative}.experience-list>.experience-row:before{content:"";background:radial-gradient(circle at 35% 30%,#8a8a8a,#4d4d4d 70%);border-radius:50%;width:9px;height:9px;position:absolute;top:17px;left:-14.5px;box-shadow:0 0 0 .5px #00000040,0 1px 1px #0000001f}.experience-list>.experience-row:first-child:before{top:5px}.experience-year{flex:0 0 178px;width:178px}.experience-details{flex-direction:column;gap:4px;width:574px;display:flex;overflow:hidden}.experience-heading{grid-template-columns:388.5px minmax(0,1fr);align-items:center;width:100%;display:grid}.experience-heading h3{font:inherit;white-space:nowrap}.experience-heading p,.experience-role{color:#1b1b1b99;white-space:nowrap}.products-section{padding-top:40px}.products-list{width:100%;margin:20px 0 0;padding:0 20px;list-style:none}.products-list .experience-row{border-top:.5px solid #1b1b1b1f;padding-block:14px}.products-list .experience-row:last-child{border-bottom:.5px solid #1b1b1b1f}.products-list .experience-row:first-child{padding-top:14px}.products-list h3{font:inherit}.products-list .experience-role{white-space:normal}.product-row{position:relative}.product-link{z-index:1;position:absolute;inset:0}.product-link:focus-visible{outline:2px solid var(--color-ink);outline-offset:2px}.product-row:hover h3{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:.5px}.product-preview{z-index:2;aspect-ratio:16/9;object-fit:cover;pointer-events:none;opacity:0;border-radius:8px;width:220px;height:auto;transition:opacity .25s,transform .45s cubic-bezier(.22,1,.36,1);position:absolute;top:50%;right:-240px;transform:translate(-8px,-50%)scale(.94);box-shadow:0 0 0 .5px #1b1b1b26,0 12px 28px #0000001f}.product-row:hover .product-preview{opacity:1;transform:translateY(-50%)scale(1)}@media (hover:none),(max-width:1200px){.product-preview{display:none}}@media (prefers-reduced-motion:reduce){.product-preview{transition:none}}.products-list .experience-details{flex:1;width:auto}.capabilities-section{justify-content:center;width:100%;padding-block:32px 40px;display:flex;overflow:hidden}.capabilities-board{isolation:isolate;background:0 0;flex:0 0 852px;width:852px;padding:40px;position:relative}.capabilities-board:before{z-index:-1;content:"";pointer-events:none;background-image:linear-gradient(#1b1b1b14 .5px,#0000 .5px),linear-gradient(90deg,#1b1b1b14 .5px,#0000 .5px);background-size:20px 20px;position:absolute;inset:-80px -120px;-webkit-mask-image:radial-gradient(62% 62%,#000 40%,#0000 100%);mask-image:radial-gradient(62% 62%,#000 40%,#0000 100%)}.capabilities-grid{grid-template-columns:repeat(4,190px);grid-auto-rows:165px;gap:4px;margin:0;padding:0;list-style:none;display:grid}.capabilities-grid li{background:var(--color-canvas);border:.5px solid #1b1b1b1f;flex-direction:column;justify-content:space-between;min-width:0;padding:12px;transition:background-color .25s;display:flex;position:relative}.capabilities-grid li:hover{z-index:3;background:#f3f3f3cc linear-gradient(135deg,#fff9,#0000 60%)}.cap-index{color:#1b1b1b4d;font-variant-numeric:tabular-nums;transition:color .2s}.cap-total{vertical-align:bottom;white-space:pre;max-width:0;transition:max-width .3s;display:inline-block;overflow:hidden}.capabilities-grid li:hover .cap-index{color:#1b1b1b80}.capabilities-grid li:hover .cap-total{max-width:4em}.cap-measure{pointer-events:none;position:absolute;inset:-.5px}.cap-measure i{opacity:0;transition:opacity .25s,transform .45s cubic-bezier(.22,1,.36,1);display:block;position:absolute}.capabilities-grid li:hover .cap-measure i{opacity:1}.cap-ruler{background-repeat:repeat}.cap-ruler--x{background-image:linear-gradient(90deg,#1b1b1b73 .5px,#0000 .5px);background-repeat:repeat-x;background-size:19.4px 5px;height:8px;top:0;left:0;right:0}.cap-ruler--y{background-image:linear-gradient(#1b1b1b73 .5px,#0000 .5px);background-repeat:repeat-y;background-size:5px 16.5px;width:8px;top:0;bottom:0;left:0}.cap-dim{color:#1b1b1b80;font-size:12px;font-style:normal;line-height:1}.cap-dim b{font-variant-numeric:tabular-nums;font-weight:400;position:absolute}.cap-dim--x{transform-origin:50%;border-left:.5px solid;border-right:.5px solid;width:100%;height:6px;top:-20px;left:0;transform:scaleX(.6)}.cap-dim--x:before{content:"";border-top:.5px solid;position:absolute;top:50%;left:0;right:0}.cap-dim--x b{bottom:8px;left:50%;transform:translate(-50%)}.cap-dim--y{transform-origin:50%;border-top:.5px solid;border-bottom:.5px solid;width:6px;height:100%;top:0;left:-20px;transform:scaleY(.6)}.cap-dim--y:before{content:"";border-left:.5px solid;position:absolute;top:0;bottom:0;left:50%}.cap-dim--y b{transform-origin:100%;top:50%;right:8px;transform:translateY(-50%)rotate(-90deg)}.capabilities-grid li:hover .cap-dim--x,.capabilities-grid li:hover .cap-dim--y{transform:none}.cap-cross{background:linear-gradient(#000,#000) 50%/100% 1px no-repeat,linear-gradient(#000,#000) 50%/1px 100% no-repeat;width:11px;height:11px;transform:scale(.5)}.capabilities-grid li:hover .cap-cross{transform:none}.cap-cross--tl{top:-5.5px;left:-5.5px}.cap-cross--tr{top:-5.5px;right:-5.5px}.cap-cross--bl{bottom:-5.5px;left:-5.5px}.cap-cross--br{bottom:-5.5px;right:-5.5px}@media (hover:none){.cap-measure{display:none}}@media (prefers-reduced-motion:reduce){.cap-measure i,.cap-total,.capabilities-grid li{transition:none}}@media (max-width:900px){.introduction,.experience-section{padding:96px 24px}.introduction-content,.about-copy,.experience-content,.experience-timeline,.experience-list,.introduction-label{width:100%}.experience-heading{grid-template-columns:minmax(0,1fr) 166px}.introduction-content{gap:64px}.experience-content,.experience-content>h2,.products-list{padding-inline:0}.experience-track,.experience-list>.experience-row:before{display:none}.experience-year{flex-basis:min(24vw,178px);width:min(24vw,178px)}.experience-details{flex:1;width:auto}.capabilities-section{padding:48px 24px}.capabilities-board{flex-basis:auto;width:100%;padding:0}.capabilities-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:auto;width:100%}.capabilities-grid li{aspect-ratio:190/165}}@media (max-width:560px){.introduction,.experience-section{padding-block:72px}.experience-heading{flex-direction:column;align-items:flex-start;display:flex}.experience-heading p,.experience-role{white-space:normal}}@media (max-width:767px){.intro-socials{flex-basis:100%}}.site-overlay{z-index:50;visibility:hidden;pointer-events:none;display:flex;position:fixed;inset:0;overflow:hidden}.site-overlay[data-active]{visibility:visible;pointer-events:auto}.site-overlay-column{flex:1 1 0;margin-right:-1px;display:flex}.site-overlay-piece{will-change:transform;background:#141414;flex:1 1 0;height:100%;margin-right:-1px;box-shadow:inset 0 1px #ffffff0f,2px 0 #141414,-2px 0 #141414}.site-overlay-logo{pointer-events:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.site-overlay-content{pointer-events:none;position:absolute;inset:0}.loader-mark{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.loader-ring{position:absolute;inset:0;transform:rotate(-90deg)}.loader-track{stroke:#ffffff14;stroke-width:1px}.loader-arc{stroke:#ffffff8c;stroke-width:1px}.loader-logo{will-change:transform;display:flex;position:absolute;top:50%;left:50%;translate:-50% -50%}.loader-side{height:16px;font-family:var(--font-family);letter-spacing:.01em;white-space:nowrap;color:#ffffff6b;font-size:12px;line-height:16px;position:absolute;top:50%;overflow:hidden;translate:0 -50%}.loader-left{right:calc(100% + var(--gap))}.loader-right{left:calc(100% + var(--gap))}.loader-text{will-change:transform;display:block}.loader-number{font-variant-numeric:tabular-nums}.nav-icon{object-fit:contain;max-width:none}.nav-circle .nav-icon,.nav-about .nav-icon{z-index:1;position:relative}.project-locked-title{align-items:flex-start;gap:2px;display:inline-flex}.project-locked-title svg{opacity:.5;margin-top:1px}@property --reveal-radius{syntax:"<length>";inherits:false;initial-value:0}.project-colour-reveal{--reveal-radius:0px;pointer-events:none;-webkit-backdrop-filter:grayscale();backdrop-filter:grayscale();-webkit-mask-image:radial-gradient(circle at var(--reveal-x,50%) var(--reveal-y,50%), transparent calc(var(--reveal-radius) - 48px), #000 var(--reveal-radius));-webkit-mask-image:radial-gradient(circle at var(--reveal-x,50%) var(--reveal-y,50%), transparent calc(var(--reveal-radius) - 48px), #000 var(--reveal-radius));mask-image:radial-gradient(circle at var(--reveal-x,50%) var(--reveal-y,50%), transparent calc(var(--reveal-radius) - 48px), #000 var(--reveal-radius));transition:--reveal-radius .42s cubic-bezier(.22,1,.36,1);position:absolute;inset:0}.project-image[data-reveal] .project-colour-reveal{--reveal-radius:150px}@media (max-width:767px),(hover:none),(pointer:coarse){.project-cover-image--locked{filter:grayscale()}.project-colour-reveal{display:none}}@media (prefers-reduced-motion:reduce){.project-colour-reveal{transition:none}}.project-locked-grid{pointer-events:none;background-image:linear-gradient(#ffffff80 1.5px,#0000 1.5px),linear-gradient(90deg,#ffffff80 1.5px,#0000 1.5px),linear-gradient(#ffffff3d 1px,#0000 1px),linear-gradient(90deg,#ffffff3d 1px,#0000 1px);background-size:96px 96px,96px 96px,12px 12px,12px 12px;position:absolute;inset:0}.project-locked-padlock{width:22%;min-width:44px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.project-locked-padlock svg{width:100%;height:auto;display:block;overflow:visible}.project-image--locked{background:#fafafa;border:1px solid #0000001a;border-radius:0}.project-cover-image--fill{object-fit:cover}.project-cover-backdrop{filter:blur(28px)saturate(1.1);transform:scale(1.25)}.project-cover-image--contain{object-fit:contain}.nav-icon svg,.nav-icon--logo svg{display:block}.nav-icon--logo{place-items:center;display:grid}.nav-icon--logo>span{place-items:center;width:14px;height:14px;display:grid}.case-page{width:100%;font-size:13px;line-height:1.3}.case-hero{min-height:100svh;padding:61px max(var(--page-gutter), calc((100% - 1144px) / 2)) 0;grid-template-columns:minmax(0,285px) minmax(0,1fr) minmax(0,285px);align-items:center;gap:48px;display:grid}.case-meta h1{color:var(--color-ink);margin:0;font-size:13px;font-weight:400}.case-category{color:var(--color-muted);margin:2px 0 0}.case-details{margin:32px 0 0}.case-details>div{color:var(--color-muted);border-top:.5px solid #1b1b1b26;grid-template-columns:100px 1fr;gap:0;padding:16px 0;display:grid}.case-details>div:first-child{border-top:0;padding-top:0}.case-details dt,.case-details dd{margin:0}.case-mark{aspect-ratio:1;place-items:center;width:min(100%,520px);margin-inline:auto;display:grid;position:relative}.case-mark-halo{background-image:radial-gradient(circle,#1b1b1b59 .8px,#0000 1.2px);background-size:7px 7px;border-radius:50%;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle,#000 18%,#0000 68%);mask-image:radial-gradient(circle,#000 18%,#0000 68%)}.case-mark-disc{aspect-ratio:1;letter-spacing:-.04em;width:34%;color:var(--color-ink);background:#fff;border-radius:50%;place-items:center;font-size:56px;display:grid;position:relative;box-shadow:0 0 0 4px #fafafa,0 0 0 5px #1b1b1b14,0 8px 24px #0000000f}.case-copy{min-height:300px;color:var(--color-muted);flex-direction:column;justify-content:space-between;align-self:center;align-items:flex-start;display:flex}.case-copy p{margin:0 0 16px}.case-visit{color:var(--color-ink);background:#fff;border-radius:999px;align-items:center;gap:4px;padding:3px 9px;text-decoration:none;display:inline-flex;box-shadow:0 0 0 .5px #1b1b1b26,0 1px 2px #0000000f}.case-visit svg{width:12px;height:12px}.case-visit--primary{color:#fff;text-shadow:.5px .5px 1px #0000004d;background:linear-gradient(#0000,#0006),#636363;border:.5px solid #0003;box-shadow:inset 0 1px .5px #ffffff26,inset 0 -1px .5px #000,0 0 0 .5px #00000040}.case-visit--primary:hover{filter:brightness(1.08)}.case-visit--primary:active{filter:brightness(.9)}.case-actions{flex-wrap:wrap;gap:8px;display:flex}.case-visual{place-items:center;width:100%;max-width:634px;margin-inline:auto;display:grid;overflow:hidden}.case-visual img{width:100%;height:auto;display:block}.case-gallery{padding:0 var(--page-gutter);flex-direction:column;gap:16px;display:flex}.case-row{gap:16px;display:grid}.case-row--2{grid-template-columns:repeat(2,minmax(0,1fr))}.case-row--1{grid-template-columns:minmax(0,1fr)}.case-row--flush{margin-top:-16px}.case-row.case-row--portrait .case-media img{aspect-ratio:906/1134;object-fit:cover}.case-row--portrait.case-row--3{grid-template-columns:repeat(3,minmax(0,1fr))}@media (max-width:719px){.case-row--portrait.case-row--3{grid-template-columns:1fr}}.case-media{position:relative}.case-media img,.case-media video{width:100%;height:auto;display:block}.case-row--2 .case-media img,.case-row--2 .case-media video{aspect-ratio:2352/1320;object-fit:cover}@media (max-width:719px){.case-row--2{grid-template-columns:minmax(0,1fr)}}.case-next{margin:96px var(--page-gutter) 0;color:inherit;border-top:.5px solid #1b1b1b1f;flex-direction:column;gap:4px;padding:24px 0 80px;text-decoration:none;display:flex}.case-next span{color:var(--color-muted)}.case-next strong{letter-spacing:-.02em;font-size:24px;font-weight:400}@media (max-width:899px){.case-hero{grid-template-columns:1fr;gap:40px;min-height:0;padding-top:110px;padding-bottom:56px}.case-mark{order:-1;width:min(100%,360px)}.case-copy{gap:24px;min-height:0}}.writing-page{width:100%;max-width:680px;padding:140px var(--page-gutter) 120px;margin-inline:auto;font-size:14px;line-height:1.5}.writing-head{isolation:isolate;position:relative}.writing-head h1,.writing-post h1{letter-spacing:-.4px;margin:0;font-size:20px;font-weight:500;line-height:1.25}.writing-head p,.writing-meta{color:var(--color-muted);margin:6px 0 0}.writing-count{font-variant-numeric:tabular-nums}.writing-halo{z-index:-1;aspect-ratio:1;pointer-events:none;background-image:radial-gradient(circle,#1b1b1b4d .8px,#0000 1.2px);background-size:7px 7px;border-radius:50%;width:300px;animation:14s ease-in-out infinite alternate halo-drift;position:absolute;top:-90px;right:-60px;-webkit-mask-image:radial-gradient(circle,#000 10%,#0000 68%);mask-image:radial-gradient(circle,#000 10%,#0000 68%)}@keyframes halo-drift{to{background-position:14px 7px;transform:scale(1.06)}}.writing-list{margin:56px 0 0;padding:0;list-style:none}.writing-list li{animation:.5s cubic-bezier(.22,1,.36,1) both writing-in;animation-delay:calc(var(--i) * 70ms + 80ms);border-top:.5px solid #1b1b1b1f}.writing-list li:last-child{border-bottom:.5px solid #1b1b1b1f}@keyframes writing-in{0%{opacity:0;transform:translateY(8px)}}.writing-list a{color:inherit;grid-template-columns:96px 1fr auto;gap:2px 16px;padding:18px 0;text-decoration:none;transition:opacity .2s,padding .35s cubic-bezier(.22,1,.36,1);display:grid;position:relative}.writing-list:hover a:not(:hover){opacity:.4}.writing-list a:hover{padding-left:10px}.writing-list a:before{background:var(--color-ink);content:"";opacity:0;border-radius:50%;width:4px;height:4px;transition:opacity .2s,transform .35s cubic-bezier(.22,1,.36,1);position:absolute;top:50%;left:0;transform:translate(-6px,-50%)scale(.4)}.writing-list a:hover:before{opacity:1;transform:translateY(-50%)scale(1)}.writing-date,.writing-kind{color:var(--color-muted)}.writing-summary{max-width:46ch;color:var(--color-muted);opacity:.8;grid-column:2;font-size:13px}.writing-arrow{opacity:0;grid-area:1/3/span 2;align-self:center;transition:opacity .2s,transform .35s cubic-bezier(.22,1,.36,1);transform:translate(-4px,4px)}.writing-list a:hover .writing-arrow{opacity:1;transform:none}.writing-kind{grid-area:1/3;justify-self:end;transition:opacity .2s}.writing-list a:hover .writing-kind{opacity:0}.writing-back{color:var(--color-muted);margin-bottom:40px;text-decoration:none;transition:transform .3s cubic-bezier(.22,1,.36,1),color .2s;display:inline-block}.writing-back:hover{color:var(--color-ink);transform:translate(-3px)}.writing-post{animation:.6s cubic-bezier(.22,1,.36,1) both writing-in}.writing-meta{margin-bottom:32px}.writing-post p:not(.writing-meta){max-width:60ch;margin:0 0 16px;line-height:1.5}.writing-post .writing-heading{letter-spacing:-.3px;margin:40px 0 12px;font-size:16px;font-weight:500;line-height:1.3}.writing-quote{margin:40px 0}.writing-post :is(.writing-quote,.writing-callout) p:before{vertical-align:-.4em;content:"“";opacity:.25;margin-right:4px;font-size:56px;line-height:0;display:inline-block}.writing-post .writing-quote p{letter-spacing:-.4px;max-width:40ch;margin:0;font-size:20px;font-weight:500;line-height:1.3}.writing-quote cite{color:var(--color-muted);margin-top:10px;font-style:normal;display:block}.writing-figure,.writing-gallery{margin:32px 0}.writing-figure img,.writing-gallery img{background:var(--color-project);border-radius:10px;width:100%;height:auto;display:block}.writing-figure figcaption,.writing-gallery figcaption{color:var(--color-muted);margin-top:10px;font-size:12px}.writing-gallery-grid{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.writing-gallery-grid img:first-child:nth-last-child(3){grid-column:1/-1}.writing-bullets{margin:0 0 16px;padding:0;list-style:none}.writing-bullets li{border-top:.5px solid #1b1b1b1f;padding:10px 0 10px 20px;position:relative}.writing-bullets li:last-child{border-bottom:.5px solid #1b1b1b1f}.writing-bullets li:before{background:var(--color-ink);content:"";border-radius:50%;width:4px;height:4px;position:absolute;top:18px;left:2px}.writing-callout{background:var(--color-project);border-radius:12px;margin:32px 0;padding:22px 24px}.writing-callout span{color:var(--color-muted);text-transform:uppercase;letter-spacing:.06em;margin-top:12px;font-size:12px;display:block}.writing-post .writing-callout p{letter-spacing:-.4px;max-width:34ch;margin:0;font-size:20px;font-weight:500;line-height:1.3}.writing-stats{grid-template-columns:repeat(3,1fr);gap:8px;margin:32px 0;display:grid}.writing-stats div{background:var(--color-project);border-radius:12px;flex-direction:column-reverse;gap:6px;padding:18px 16px;display:flex}.writing-stats dt{color:var(--color-muted);font-size:12px}.writing-stats dd{letter-spacing:-.8px;font-variant-numeric:tabular-nums;margin:0;font-size:28px;font-weight:500}.writing-divider{border:0;border-top:.5px solid #1b1b1b1f;margin:40px 0}@media (max-width:520px){.writing-stats dd{font-size:22px}}.writing-next{color:inherit;border-top:.5px solid #1b1b1b1f;flex-direction:column;gap:4px;margin-top:80px;padding-top:20px;text-decoration:none;display:flex}.writing-next span{color:var(--color-muted)}.writing-next strong{letter-spacing:-.3px;font-size:16px;font-weight:500}.writing-next:hover strong{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:.5px}.writing-next:focus-visible{outline:2px solid var(--color-ink);outline-offset:4px}.read-progress{z-index:30;background:var(--color-ink);width:100%;height:2px;transform:scaleX(var(--read,0));transform-origin:0;pointer-events:none;position:fixed;top:0;left:0}.writing-page{overflow-x:clip}@media (max-width:519px){.writing-page{padding-top:112px;padding-bottom:88px}.writing-list{margin-top:40px}.writing-list a{grid-template-columns:1fr auto;padding:16px 0}.writing-date{grid-column:1/-1}.writing-summary{grid-column:1/-1;max-width:none}.writing-arrow{display:none}.writing-halo{opacity:.7;width:220px;top:-70px;right:-90px}.writing-back{margin-bottom:24px;padding:10px 0}.writing-meta{margin-bottom:24px}.writing-heading{margin-top:32px}.writing-quote,.writing-callout,.writing-figure,.writing-gallery,.writing-stats{margin-top:24px;margin-bottom:24px}.writing-callout{padding:18px}.writing-post .writing-quote p,.writing-post .writing-callout p{font-size:18px}.writing-stats{gap:6px}.writing-stats div{padding:14px 12px}.writing-next{margin-top:56px;padding-top:18px;padding-bottom:8px}}@media (hover:none){.writing-list:hover a:not(:hover){opacity:1}.writing-list a:hover{padding-left:0}.writing-list a:hover:before,.writing-list a:hover .writing-arrow{opacity:0}.writing-list a:hover .writing-kind{opacity:1}.writing-back:hover{transform:none}}@media (prefers-reduced-motion:reduce){.writing-halo,.writing-list li,.writing-post{animation:none}.writing-list a,.writing-list a:before,.writing-arrow,.writing-back{transition:none}}
