@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-ext-wght-normal-DCwSJGxG.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-wght-normal-D_ZTVpCC.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink:#1d1d1f;--paper:#fff;--soft:#f5f5f7;--line:#d2d2d7;--muted:#6e6e73;--body:#424245;--muted-dark:#a1a1a6;--accent:#be3a30;--caution:#c06234;--positive:#20665f;--font:"Figtree Variable", system-ui, sans-serif;--base:18px;--fs-xs:calc(var(--base) / 1.5625);--fs-sm:calc(var(--base) / 1.25);--fs-base:var(--base);--fs-md:calc(var(--base) * 1.25);--fs-lg:calc(var(--base) * 1.5625);--fs-xl:calc(var(--base) * 1.95313);--fs-2xl:calc(var(--base) * 2.44141);--fs-3xl:calc(var(--base) * 3.05176);--fs-4xl:calc(var(--base) * 3.8147);--fs-5xl:calc(var(--base) * 4.76837);--h1:var(--fs-5xl);--h-page:var(--fs-4xl);--h2:var(--fs-3xl);--h-section:var(--fs-2xl);--h3:var(--fs-lg);--h4:var(--fs-md);--text:var(--fs-base);--radius:20px;--radius-sm:16px;--gutter:40px;--space:180px;--flow:24px;--block-gap:48px;--heading-gap:32px;--ease:cubic-bezier(.25, 1, .5, 1);--fast:.3s;--slow:.9s}@media (width<=800px){:root{--base:17px;--h1:var(--fs-2xl);--h-page:var(--fs-2xl);--h2:var(--fs-xl);--h-section:var(--fs-xl);--gutter:20px;--space:104px;--block-gap:36px;--heading-gap:24px}}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:90px}body{font-family:var(--font);font-size:var(--text);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;line-height:1.6;overflow-x:clip}img{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}ul,ol{list-style:none}p{color:var(--muted)}.dark p{color:var(--muted-dark)}h1{font-size:var(--h1);letter-spacing:-.035em;font-weight:600;line-height:1.05}h2{font-size:var(--h2);letter-spacing:-.03em;font-weight:600;line-height:1.12}h3{font-size:var(--h3);letter-spacing:-.02em;font-weight:600;line-height:1.25}.container{max-width:1280px;padding:0 var(--gutter);margin:0 auto}.dark{background:var(--ink);color:var(--paper)}.center{text-align:center}section{padding:var(--space) 0}section.container{padding-top:var(--space);padding-bottom:var(--space)}.visually-hidden{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{background:var(--ink);color:var(--paper);z-index:200;border-radius:999px;padding:8px 14px;position:absolute;top:-50px;left:16px}.skip-link:focus{top:12px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.reveal{opacity:0;transition:opacity var(--slow) var(--ease), transform var(--slow) var(--ease);transform:translateY(20px)}.reveal.visible{opacity:1;transform:none}.btn{background:var(--ink);color:var(--paper);font-size:var(--fs-base);text-wrap:nowrap;transition:background-color var(--fast) var(--ease), transform var(--fast) var(--ease);border-radius:999px;padding:12px 24px;font-weight:600;display:inline-block}.btn:hover{background:#3a3a3c;transform:scale(1.03)}.dark .btn{background:var(--paper);color:var(--ink)}.dark .btn:hover{background:#e8e8ed}.text-link{font-size:var(--fs-base);color:var(--ink);align-items:center;gap:4px;font-weight:600;display:inline-flex}.dark .text-link{color:var(--paper)}.text-link .chevron{transition:transform var(--fast) var(--ease)}.text-link:hover{text-underline-offset:4px;text-decoration:underline}.text-link:hover .chevron{transform:translate(3px)}.text-link.back:hover .chevron{transform:translate(-3px)}.lift{transition:transform var(--fast) var(--ease), box-shadow var(--fast) var(--ease)}.lift:hover{transform:translateY(-4px);box-shadow:0 8px 24px #0000000f}.site-header{z-index:100;-webkit-backdrop-filter:saturate(180%)blur(20px);transition:box-shadow var(--fast) var(--ease), background-color var(--fast) var(--ease), transform .4s var(--ease);background:#fffc;position:fixed;top:0;left:0;right:0}.site-header.hidden:not(:focus-within){transform:translateY(-100%)}main{padding-top:72px}.site-header.scrolled{box-shadow:0 1px #00000014}.site-header:not(.scrolled):not(.menu-open){-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0}.header-inner{justify-content:space-between;align-items:center;height:72px;display:flex}.logo{font-size:var(--fs-sm);align-items:center;gap:10px;font-weight:600;display:flex}.site-header nav{font-size:var(--fs-sm);gap:32px;font-weight:500;display:flex}.site-header nav a{position:relative}.site-header nav a:after{content:"";background:var(--accent);transform-origin:0;height:2px;transition:transform var(--fast) var(--ease);position:absolute;bottom:-4px;left:0;right:0;transform:scaleX(0)}.site-header nav a:hover:after,.site-header nav a.active:after{transform:scaleX(1)}.menu-button{cursor:pointer;background:0 0;border:0;width:40px;height:40px;display:none;position:relative}.burger,.burger:before,.burger:after{background:var(--ink);width:20px;height:2px;transition:transform var(--fast) var(--ease);position:absolute;left:10px}.burger{top:19px}.burger:before,.burger:after{content:"";left:0}.burger:before{top:-6px}.burger:after{top:6px}.menu-open .burger{background:0 0}.menu-open .burger:before{transform:translateY(6px)rotate(45deg)}.menu-open .burger:after{transform:translateY(-6px)rotate(-45deg)}@media (width<=800px){.menu-button{display:block}.header-inner{flex-wrap:wrap;height:auto}.header-inner .logo{height:72px}.site-header nav{width:100%;font-size:var(--fs-md);opacity:0;visibility:hidden;max-height:0;transition:max-height .4s var(--ease), padding .4s var(--ease), opacity var(--fast) var(--ease), visibility 0s .4s;flex-direction:column;gap:20px;padding:0;overflow:hidden}.menu-open nav{opacity:1;visibility:visible;max-height:320px;padding:4px 0 28px;transition-delay:0s}}section.hero{isolation:isolate;align-items:center;min-height:100svh;margin-top:-72px;padding-top:72px;padding-bottom:72px;display:flex;position:relative}.hero-inner{font-size:var(--h1);max-width:13em;margin-left:auto;margin-right:auto}.eyebrow{font-size:var(--fs-md);color:var(--muted);margin-bottom:20px;font-weight:600}.hero-text{font-size:var(--h1);letter-spacing:-.035em;color:var(--ink);text-indent:1.2em;font-weight:600;line-height:1.05}.hero-line{text-indent:1.2em;display:block}.hero-word{text-indent:0;animation:word-in .5s var(--ease);display:inline-block}@keyframes word-in{0%{opacity:0;transform:translateY(.3em)}}.hero-bg{z-index:-1;width:100vw;position:absolute;top:0;bottom:0;left:50%;overflow:hidden;translate:-50%;-webkit-mask-image:linear-gradient(#fff 80%,#0000);mask-image:linear-gradient(#fff 80%,#0000)}.hero-blob{aspect-ratio:1;will-change:transform;position:absolute;translate:-50% -50%}.hero-drift{will-change:transform;width:100%;height:100%;display:block}.hero-shape{width:100%;height:100%;opacity:var(--blob-opacity,.45);will-change:transform;background:radial-gradient(circle, var(--color) 0%, color-mix(in srgb, var(--color) 55%, transparent) 38%, transparent 70%);border-radius:50%;display:block}@keyframes flow-a{0%,to{transform:translate(-12%,8%)scale(1)}25%{transform:translate(6%,-10%)scale(1.2)}50%{transform:translate(16%,4%)scale(.95)}75%{transform:translate(-2%,14%)scale(1.12)}}@keyframes flow-b{0%,to{transform:translate(10%,-8%)scale(1.1)}20%{transform:translate(-6%,-14%)scale(.92)}45%{transform:translate(-16%,6%)scale(1.18)}70%{transform:translate(4%,14%)scale(.98)}}@keyframes flow-c{0%,to{transform:translate(-4%,12%)scale(.95)}30%{transform:translate(12%,2%)scale(1.22)}55%{transform:translate(6%,-14%)scale(1.02)}80%{transform:translate(-12%,-4%)scale(1.14)}}@keyframes morph{0%{transform:rotate(0)scale(1.35,.8)}33%{transform:rotate(120deg)scale(.9,1.2)}66%{transform:rotate(240deg)scale(1.25,.9)}to{transform:rotate(360deg)scale(1.35,.8)}}.intro{grid-template-columns:1fr 1fr;align-items:start;gap:80px;display:grid}.intro-left{flex-direction:column;align-items:center;gap:36px;min-width:0;display:flex;position:sticky;top:110px}.headshot{aspect-ratio:1;object-fit:cover;border-radius:50%;width:100%;max-width:360px}.photo-wrap{justify-content:center;width:100%;display:flex}.photo-wrap .headshot{cursor:grab}.headshot.flung{z-index:60;position:relative}.intro-left:has(.flung){z-index:60}.intro-right{flex-direction:column;align-items:flex-start;gap:36px;display:flex}.intro-right p{max-width:65ch}.info-cards{gap:16px;width:100%;display:grid}.info-cards li{background:var(--soft);border-radius:var(--radius-sm);align-items:center;gap:16px;padding:18px 22px;display:flex}.info-cards img{width:24px;height:24px}.info-cards div{flex-direction:column;display:flex}.info-cards span{font-size:var(--fs-sm);color:var(--muted)}.marquee{cursor:grab;touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:100%;overflow:hidden}.marquee:active{cursor:grabbing}.marquee-track{gap:10px;width:max-content;padding-right:10px;display:flex}.marquee{margin-bottom:-28px;padding-top:8px;padding-bottom:28px}.tool{flex:none;display:block;position:relative}.tool-icon{opacity:.7;width:48px;height:48px;transition:opacity var(--fast) var(--ease), transform var(--fast) var(--ease);display:block}.tool-name{white-space:nowrap;font-size:var(--fs-xs);color:var(--ink);opacity:0;pointer-events:none;transition:opacity var(--fast) var(--ease), translate var(--fast) var(--ease);font-weight:600;position:absolute;top:calc(100% + 6px);left:50%;translate:-50% 4px}@media (hover:hover){.tool:hover .tool-icon{opacity:1;transform:scale(1.08)}.tool:hover .tool-name{opacity:1;translate:-50%}}.tool.is-tapped .tool-icon{opacity:1;transform:scale(1.08)}.tool.is-tapped .tool-name{opacity:1;translate:-50%}.on-touch{display:none}@media (hover:none){.on-mouse{display:none}.on-touch{display:inline}}.callout{justify-content:space-between;align-items:center;gap:48px;display:flex}.callout h2{max-width:16em}.projects h1,.projects h2{margin-bottom:64px}.project-card{grid-template-columns:1.4fr 1fr;align-items:center;gap:64px;margin-bottom:128px;display:grid}.project-frame{border-radius:var(--radius);overflow:hidden}.project-thumb{aspect-ratio:16/10;object-fit:cover;object-position:top;width:100%;transition:transform var(--slow) var(--ease)}.project-card:hover .project-thumb{transform:scale(1.03)}.project-meta{font-size:var(--fs-sm);color:#86868b;transition:border-color var(--fast) var(--ease);border-bottom:1px solid #fff3;justify-content:space-between;margin-bottom:16px;padding-bottom:12px;display:flex}.project-card:hover .project-meta{border-color:var(--accent)}.project-title{justify-content:space-between;margin-bottom:10px;display:flex}.project-title .chevron{transition:transform var(--fast) var(--ease)}.project-card:hover .project-title .chevron{transform:translate(4px)}.case-study{padding-top:80px;padding-bottom:var(--space)}.cs-main{max-width:720px;margin:0 auto}.cs-main>h1{font-size:var(--h-page)}.cs-nav{display:none}@media (width>=1200px){.case-study{grid-template-columns:1fr minmax(0,720px) 1fr;column-gap:48px;display:grid}.cs-main{grid-column:2;margin:0}.cs-nav{grid-area:1/1;place-self:start end;width:min(180px,100%);display:block;position:sticky;top:120px}}.cs-nav a{border-left:2px solid var(--line);font-size:var(--fs-sm);color:var(--muted);transition:color var(--fast) var(--ease), border-color var(--fast) var(--ease);padding:6px 0 6px 14px;display:block}.cs-nav a:hover{color:var(--ink)}.cs-nav a.current{color:var(--ink);border-color:var(--accent);font-weight:600}.details{border-top:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:24px;margin-top:40px;margin-bottom:72px;padding-top:28px;display:grid}.details dt{font-size:var(--fs-sm);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:4px;font-weight:600}.details dd{font-size:var(--fs-base);white-space:pre-line;font-weight:500}.banner{aspect-ratio:16/9;object-fit:cover;object-position:top;border-radius:var(--radius);width:100%;margin-bottom:40px}.prose{margin-bottom:80px}:where(.prose,.prose .process)>*+*{margin-top:var(--flow)}:where(.prose,.prose .process)>:where(div,blockquote,ul:has(>li>strong:first-child),ul:has(>li>img:first-child),p:has(>img:only-child)):not(:first-child),:where(.prose,.prose .process)>:where(div,blockquote,ul:has(>li>strong:first-child),ul:has(>li>img:first-child),p:has(>img:only-child),p:has(>em:only-child))+:where(:not(h2,h3,h4)){margin-top:var(--block-gap)}.prose h2{border-top:1px solid var(--line);font-size:var(--fs-sm);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-top:160px;padding-top:32px;scroll-margin-top:100px}.prose h3{font-size:var(--h-section);margin-top:12px;line-height:1.12}.prose h3+*{margin-top:var(--heading-gap)}.prose h4+*{margin-top:16px}.prose h4{font-size:var(--h4);letter-spacing:-.015em;margin-top:72px;font-weight:600}.prose p,.prose li{color:var(--body);line-height:1.7}.prose strong{color:var(--ink)}.prose ul{padding-left:1.3em;list-style:outside}.prose ol{padding-left:1.3em;list-style:decimal}.prose li+li{margin-top:6px}.prose li::marker{color:var(--accent)}.prose img{border-radius:var(--radius);width:100%}.prose>p>img:only-child{background:var(--soft);padding:24px}@property --fade-left{syntax:"<length>";inherits:false;initial-value:0}@property --fade-right{syntax:"<length>";inherits:false;initial-value:0}.prose .gallery{scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-mask-image:linear-gradient(to right, transparent 0, #000 var(--fade-left), #000 calc(100% - var(--fade-right)), transparent 100%);-webkit-mask-image:linear-gradient(to right, transparent 0, #000 var(--fade-left), #000 calc(100% - var(--fade-right)), transparent 100%);mask-image:linear-gradient(to right, transparent 0, #000 var(--fade-left), #000 calc(100% - var(--fade-right)), transparent 100%);transition:--fade-left var(--fast) var(--ease), --fade-right var(--fast) var(--ease);gap:20px;display:flex;overflow-x:auto}.prose .gallery.more-left{--fade-left:80px}.prose .gallery.more-right{--fade-right:80px}.prose .gallery::-webkit-scrollbar{display:none}.tile{scroll-snap-align:start;flex:none;width:340px;margin:0}.gallery.portrait .tile{width:230px}.tile-button{aspect-ratio:4/3;background:var(--soft);cursor:zoom-in;width:100%;transition:background-color var(--fast) var(--ease);border:0;border-radius:18px;padding:20px;display:block}.gallery.portrait .tile-button{aspect-ratio:5/8}.tile-button:hover{background:#ececf0}.prose .tile-button img{object-fit:contain;background:0 0;border-radius:4px;width:100%;height:100%;padding:0}.tile figcaption{font-size:var(--fs-sm);color:var(--muted);margin-top:12px;line-height:1.4}.gallery-controls{justify-content:flex-end;gap:10px;margin-top:14px;display:flex}.gallery-button{width:36px;height:36px;color:var(--ink);font-size:var(--fs-md);cursor:pointer;transition:background-color var(--fast) var(--ease);background:#e8e8ed;border:0;border-radius:50%;line-height:1}.gallery-button:hover{background:#d2d2d7}html:has(.viewer[open]){overflow:hidden}.viewer{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:#fff;background:#121214f0;border:0;width:100vw;max-width:none;height:100vh;max-height:none;margin:0;padding:60px 80px}.viewer[open]{justify-content:center;align-items:center;display:flex}.viewer::backdrop{background:0 0}.viewer-figure{flex-direction:column;align-items:center;gap:16px;max-width:100%;max-height:100%;margin:0;display:flex}.viewer-figure img{object-fit:contain;background:#fff;border-radius:8px;max-width:100%;max-height:calc(100vh - 180px)}.viewer-figure figcaption{font-size:var(--fs-sm);color:#d2d2d7;text-align:center}.viewer-close,.viewer-prev,.viewer-next{color:#fff;width:44px;height:44px;font-size:var(--fs-lg);cursor:pointer;transition:background-color var(--fast) var(--ease);background:#ffffff24;border:0;border-radius:50%;line-height:1;position:fixed}.viewer-close:hover,.viewer-prev:hover,.viewer-next:hover{background:#ffffff47}.viewer-close{top:20px;right:20px}.viewer-prev{top:50%;left:20px;transform:translateY(-50%)}.viewer-next{top:50%;right:20px;transform:translateY(-50%)}.viewer-count{text-align:center;font-size:var(--fs-sm);color:#a1a1a6;position:fixed;bottom:20px;left:0;right:0}.prose .compare{grid-template-columns:1fr 1fr;gap:16px;max-width:480px;display:grid}.prose .compare figcaption{font-size:var(--fs-sm);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;font-weight:600}.prose .compare img{background:var(--soft);padding:16px}.prototype-bar{border:1px solid var(--line);border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:var(--soft);border-bottom:0;gap:6px;padding:12px 14px;display:flex}.prototype-bar span{background:var(--line);border-radius:50%;width:10px;height:10px}.prototype-screen{aspect-ratio:1512/982;border:1px solid var(--line);border-radius:0 0 var(--radius-sm) var(--radius-sm);background:var(--soft);position:relative;overflow:hidden}.prose .prototype-screen img{object-fit:cover;object-position:top;background:0 0;border-radius:0;width:100%;height:100%;padding:0}.prototype-screen iframe{background:#fff;border:0;width:100%;height:100%;position:absolute;inset:0}.prototype-screen.loading:before{content:"Loading prototype…";color:var(--muted);font-size:var(--fs-sm);place-items:center;display:grid;position:absolute;inset:0}.prototype-screen:fullscreen{border:0;border-radius:0}.prototype.phone{max-width:340px;margin-left:auto;margin-right:auto}.prototype.phone .prototype-bar{display:none}.prototype.phone .prototype-screen{aspect-ratio:440/956;border:8px solid var(--ink);border-radius:40px}.prototype.phone .prototype-play{white-space:nowrap}.prototype-play{background:var(--ink);color:var(--paper);font:inherit;font-size:var(--fs-base);white-space:nowrap;cursor:pointer;transition:transform var(--fast) var(--ease), background-color var(--fast) var(--ease);border:0;border-radius:999px;align-items:center;gap:10px;padding:14px 26px;font-weight:600;display:inline-flex;position:absolute;top:50%;left:50%;translate:-50% -50%;box-shadow:0 10px 30px #00000040}.prototype-play:hover{background:#3a3a3c;transform:scale(1.04)}.prose .prototype-links{font-size:var(--fs-sm);justify-content:space-between;margin-top:10px;display:flex}.prototype-links a,.prototype-full{color:var(--muted);transition:color var(--fast) var(--ease);font-weight:600}.prototype-full{font:inherit;cursor:pointer;background:0 0;border:0}.prototype-links a:hover,.prototype-full:hover{color:var(--ink)}.prose .compare.wide{align-items:start;max-width:none}.prose .compare.wide img{padding:10px}.prose em{color:var(--muted)}.prose p:has(>em:only-child){font-size:var(--fs-sm);margin-top:12px;line-height:1.5}:is(.prose ul:has(>li>strong:first-child),.prose ul:has(>li>img:first-child)){grid-template-columns:repeat(2,1fr);gap:20px;padding:0;list-style:none;display:grid}:is(.prose ul:has(>li>strong:first-child)>li,.prose ul:has(>li>img:first-child)>li){background:var(--soft);font-size:var(--fs-base);border-radius:18px;margin:0;padding:28px 32px;line-height:1.5;position:relative}.prose ul:has(>li>img:first-child)>li:has(>img:first-child){padding-left:72px}.prose li>img:first-child{opacity:.55;border-radius:0;width:28px;height:28px;position:absolute;top:24px;left:28px}.prose li>strong{font-size:var(--fs-md);margin-bottom:4px;font-weight:600;line-height:1.3;display:block}.prose .card.card-problem{background:color-mix(in srgb, var(--caution) 10%, white)}.prose .card.card-opportunity{background:color-mix(in srgb, var(--positive) 10%, white)}.prose .columns{grid-template-rows:auto auto;grid-template-columns:1fr 1fr;grid-auto-flow:column;gap:8px 40px;display:grid}.prose .columns h4{margin-top:0}.prose blockquote{background:var(--soft);border-left:3px solid var(--accent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:36px 40px}.prose blockquote p{color:var(--ink);font-size:var(--fs-md);line-height:1.5}.prose blockquote strong:first-child{font-size:var(--fs-sm);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:8px;display:block}.prose blockquote p+p{margin-top:12px}.prose .callout-box{background:var(--soft);border-left:3px solid var(--accent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:40px 44px}.prose .callout-box>:first-child{margin-top:0}.prose .callout-box>*+*{margin-top:24px}.prose .callout-box>p:first-child+*{margin-top:8px}.prose .callout-box>p:has(>em:only-child){margin-top:12px}.prose .callout-box>p:first-child strong:only-child{font-size:var(--fs-sm);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);display:block}.prose .callout-box .compare img{background:var(--paper)}.about-intro{grid-template-columns:1.3fr 1fr;align-items:center;gap:80px;display:grid}.about-intro .headshot{justify-self:center}.lead{font-size:var(--fs-lg);max-width:30ch;margin-top:32px;line-height:1.45}.tag-row{flex-wrap:wrap;align-items:center;gap:8px;margin-top:32px;display:flex}.tag-label{font-size:var(--fs-sm);color:var(--ink);margin-right:4px;font-weight:600}.tag{background:var(--soft);font-size:var(--fs-sm);color:var(--ink);border-radius:999px;padding:6px 14px;font-weight:500}.about h2{margin-bottom:48px}.timeline li{border-top:1px solid var(--line);grid-template-columns:180px 1fr;column-gap:40px;padding:44px 0;display:grid}.timeline .when{color:var(--accent);grid-row:span 3;font-weight:600}.timeline h3{font-size:var(--h4)}.timeline p{max-width:65ch;margin-top:10px}.timeline-photo{border-radius:var(--radius-sm);object-fit:cover;background:var(--soft);width:auto;max-width:100%;height:300px;margin-top:20px;display:block}.timeline-figure figcaption{font-size:var(--fs-sm);color:var(--muted);margin-top:8px}.snapshots{justify-content:center;gap:28px;margin-bottom:64px;display:flex}.snapshots figure{width:220px;transition:transform var(--fast) var(--ease);background:#fff;border-radius:4px;padding:10px 10px 0;box-shadow:0 12px 30px #00000059}.snapshots img{aspect-ratio:4/5;object-fit:cover;width:100%;display:block}.snapshots figcaption{font-size:var(--fs-sm);color:var(--ink);text-align:center;padding:10px 2px 12px;font-weight:500;line-height:1.3}.snapshots figure:first-child{transform:rotate(-4deg)}.snapshots figure:nth-child(2){transform:rotate(2deg)translateY(-10px)}.snapshots figure:nth-child(3){transform:rotate(-1.5deg)}.snapshots figure:hover{transform:rotate(0)scale(1.05)}.interests{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;display:grid}.interests li{border-radius:var(--radius-sm);background:#ffffff12;padding:36px}.interests h3{font-size:var(--h4)}.interests p{font-size:var(--fs-base);margin-top:12px}.coverflow-intro{text-align:center;margin-top:120px}.about .coverflow-intro h2{margin-bottom:8px}.coverflow{--size:clamp(150px, 20vw, 240px);text-align:center;margin-top:56px;overflow:hidden}.coverflow-stage{height:calc(var(--size) * 1.5);perspective:1400px;touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;--near:.35;--step:.22;--angle:65deg;--edge-fade:18%;-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--edge-fade), #000 calc(100% - var(--edge-fade)), transparent);-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--edge-fade), #000 calc(100% - var(--edge-fade)), transparent);mask-image:linear-gradient(to right, transparent, #000 var(--edge-fade), #000 calc(100% - var(--edge-fade)), transparent);outline:none;padding-top:12px;position:relative}.cover{width:var(--size);aspect-ratio:1;margin-left:calc(var(--size) / -2);cursor:pointer;transform:translateX(calc(var(--side) * (min(var(--distance), 1) * var(--size) * var(--near) + var(--distance) * var(--size) * var(--step)))) translateZ(calc(min(var(--distance), 1) * var(--size) * -.5)) rotateY(calc(var(--side) * min(var(--distance), 1) * var(--angle) * -1));transition:transform var(--glide,.55s) var(--ease);will-change:transform;background:#000;border:0;padding:0;position:absolute;top:12px;left:50%}.cover:after{content:"";pointer-events:none;opacity:calc(min(var(--distance), 1) * .3);transition:opacity var(--glide,.55s) var(--ease);background:#000;position:absolute;inset:0}.coverflow-stage.is-dragging .cover,.coverflow-stage.is-dragging .cover:after{transition:none}.cover img{object-fit:cover;pointer-events:none;width:100%;height:100%;display:block}.cover-placeholder{text-align:left;width:100%;height:100%;font-size:var(--fs-sm);color:#fff;background:linear-gradient(135deg, hsl(var(--hue) 45% 45%), hsl(calc(var(--hue) + 40) 50% 22%));align-items:flex-end;padding:16px;font-weight:600;display:flex}.cover-reflection{pointer-events:none;height:50%;position:absolute;top:calc(100% + 2px);left:0;right:0;overflow:hidden}.cover-reflection:after{content:"";background:linear-gradient(#1d1d1f99 0%, #1d1d1fd1 25%, #1d1d1ff0 55%, var(--ink) 85%);position:absolute;inset:0}.cover .cover-reflection img{height:var(--size);transform:scaleY(-1)}.cover-play{color:#fff;width:64px;height:64px;font-size:var(--fs-md);opacity:0;transition:opacity var(--fast) var(--ease);background:#000000a6;border-radius:50%;place-items:center;margin:auto;display:grid;position:absolute;inset:0}.cover.is-current:hover .cover-play,.cover.is-playing .cover-play,.coverflow-stage:focus-visible .cover-play{opacity:1}@media (hover:none){.cover.is-current .cover-play{opacity:1}}@media (width<=600px){.coverflow{--size:46vw}.coverflow-stage{--near:.45;--step:.3;--angle:50deg;--edge-fade:6%}}.coverflow-stage:focus-visible .cover.is-current{outline:3px solid var(--paper);outline-offset:4px}.coverflow-caption{min-height:88px}.coverflow-title{font-size:var(--h4);font-weight:600;color:var(--paper)!important}.coverflow-title a{text-underline-offset:4px;transition:text-decoration-color var(--fast) var(--ease);-webkit-text-decoration:underline #0000;text-decoration:underline #0000}.coverflow-title a:hover{text-decoration-color:currentColor}.coverflow-artist{margin-top:2px}.coverflow-controls{justify-content:center;gap:12px;margin-top:20px;display:flex}.coverflow-arrow{width:40px;height:40px;color:var(--paper);font-size:var(--fs-lg);cursor:pointer;transition:background-color var(--fast) var(--ease);background:#ffffff1f;border:0;border-radius:50%;line-height:1}.coverflow-arrow:hover:not(:disabled){background:#ffffff38}.coverflow-arrow:disabled{opacity:.3;cursor:default}.resume-top,.resume-viewer{max-width:880px;margin-left:auto;margin-right:auto}.resume-top{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;display:flex}.resume-actions{align-items:center;gap:24px;display:flex}.resume-actions .text-link{font-size:var(--fs-base)}.resume-viewer{aspect-ratio:8.5/11;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--soft);width:100%;margin-top:48px;display:block;overflow:hidden}.resume-fallback{text-align:center;height:100%;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;display:flex}.site-footer{padding:var(--space) 0 48px}.footer-small{color:#86868b;font-size:var(--h4);font-weight:600}.footer-email{font-size:min(var(--h2), 7vw);letter-spacing:-.03em;transition:color var(--fast) var(--ease);margin-top:8px;font-weight:600;display:inline-block}.footer-email:hover{color:var(--line)}.footer-links{font-size:var(--fs-sm);letter-spacing:.06em;text-transform:uppercase;border-top:1px solid #ffffff26;gap:28px;margin-top:80px;padding-top:24px;font-weight:600;display:flex}.footer-links a{color:var(--paper);transition:color var(--fast) var(--ease)}.footer-links a:hover{color:var(--accent)}.not-found{flex-direction:column;align-items:flex-start;gap:20px;display:flex}@media (width<=800px){section.hero{min-height:auto;padding-top:120px;padding-bottom:48px}.intro,.project-card,.about-intro{grid-template-columns:1fr;gap:32px}.intro-left{position:static}.headshot{max-width:240px}.project-card{margin-bottom:64px}.callout{flex-direction:column;align-items:flex-start}.intro-right .btn,.callout .btn{align-self:center}.timeline li{grid-template-columns:1fr}.timeline-photo{height:240px}.snapshots{gap:12px}.snapshots figure{width:31%;padding:5px 5px 0}.snapshots figcaption{font-size:var(--fs-xs);padding:6px 0 8px}.tile{width:260px}.prose .gallery.more-left{--fade-left:40px}.prose .gallery.more-right{--fade-right:40px}.gallery.portrait .tile{width:180px}.viewer{padding:60px 12px}.viewer-prev,.viewer-next{top:auto;bottom:12px;transform:none}.prose>p>img:only-child{padding:14px}:is(.prose ul:has(>li>strong:first-child),.prose ul:has(>li>img:first-child)){grid-template-columns:1fr;gap:12px}.prose .columns{grid-template-rows:none;grid-template-columns:1fr;grid-auto-flow:row}.prose .columns h4:not(:first-child){margin-top:24px}}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none;transform:none}.hero-word,.hero-drift,.hero-shape{animation:none!important}.cover,.cover:after{transition:none}html{scroll-behavior:auto}}.prose .summary ul:has(>li>strong:first-child){grid-template-columns:repeat(3,1fr)}.prose .summary ul:has(>li>strong:first-child)>li{padding:26px 24px}.prose .summary li>strong{font-size:var(--fs-sm);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}.prose .summary .card-problem>strong{color:var(--caution)}.prose .summary .card-opportunity>strong{color:var(--positive)}.prose .numbered ol{counter-reset:big;padding:0;list-style:none}.prose .numbered li{counter-increment:big;border-top:1px solid var(--line);grid-template-columns:80px 1fr;column-gap:16px;margin:0;padding:36px 0;display:grid}.prose .numbered li:last-child{border-bottom:1px solid var(--line)}.prose .numbered li:before{content:counter(big);font-size:var(--fs-2xl);letter-spacing:-.03em;color:var(--accent);grid-row:span 2;font-weight:600;line-height:1}.prose .numbered li>strong{font-size:var(--h4);margin-bottom:4px}.prose .steps ol{counter-reset:step;flex-wrap:wrap;gap:8px;padding:0;list-style:none;display:flex}.prose .steps li{counter-increment:step;margin:0}.prose .steps a{background:var(--soft);font-size:var(--fs-sm);color:var(--ink);transition:background-color var(--fast) var(--ease);border-radius:999px;align-items:center;gap:8px;padding:8px 16px 8px 8px;font-weight:600;display:inline-flex}.prose .steps a:before{content:counter(step);background:var(--ink);width:24px;height:24px;color:var(--paper);font-size:var(--fs-sm);border-radius:50%;place-items:center;display:grid}.prose .steps a:hover{background:#e8e8ed}.prose .steps li:not(:last-child):after{content:"→";color:var(--muted);margin-left:8px}.prose .chips ul{flex-wrap:wrap;gap:8px;padding:0;list-style:none;display:flex}.prose .chips li{background:var(--soft);font-size:var(--fs-sm);color:var(--ink);border-radius:999px;margin:0;padding:6px 14px;font-weight:500}.prose .kicker{font-size:var(--fs-sm);letter-spacing:.08em;text-transform:uppercase;color:var(--positive);margin-top:80px;font-weight:600}.prose .kicker+h4{margin-top:8px}@media (width<=800px){.prose .summary ul:has(>li>strong:first-child){grid-template-columns:1fr}.prose .numbered li{grid-template-columns:44px 1fr}.prose .numbered li:before{font-size:var(--fs-xl)}}.prose .process{--soft:#2c2c2e;--line:#3a3a3c;--body:#d2d2d7;--muted:var(--muted-dark);--accent:#ff6f61;background:var(--ink);color:var(--paper);box-shadow:0 0 0 100vmax var(--ink);clip-path:inset(0 -100vmax);margin-top:180px;padding:128px 0 144px}.prose .process>p>img:only-child{background:var(--soft);padding:24px}.prose .process>h2:first-child{border-top:0;margin-top:0;padding-top:0}.prose .process>h2:first-child+h3{font-size:var(--h2)}.prose .process h3{font-size:var(--fs-xl)}.prose .process :is(h3,h4,strong,blockquote p){color:var(--paper)}.prose .process :is(blockquote strong:first-child,.callout-box>p:first-child strong:only-child){color:var(--accent)}.prose .process li>img:first-child{filter:invert();opacity:.7}.prose .process .card.card-problem{background:color-mix(in srgb, var(--caution) 28%, var(--ink))}.prose .process .card.card-opportunity{background:color-mix(in srgb, var(--positive) 35%, var(--ink))}.prose .process .steps a{color:var(--paper)}.prose .process .steps a:before{background:var(--paper);color:var(--ink)}.prose .process .steps a:hover,.prose .process .tile-button:hover{background:#3a3a3c}.prose .process .chips li{color:var(--paper)}.prose .process .kicker{color:#6cc4b8}.prose .process .callout-box .compare img{background:var(--ink)}.prose .process+h2{border-top:0;margin-top:180px}.cs-nav{z-index:2}.cs-nav a[data-on-dark]{color:var(--muted-dark);border-color:#48484a}.cs-nav a[data-on-dark]:hover,.cs-nav a[data-on-dark].current{color:var(--paper)}.cs-nav a[data-on-dark].current{border-color:#ff6f61}.cs-nav .nested a{padding-left:26px}@media (width<=800px){.prose .process{margin-top:104px;padding:72px 0 88px}.prose .process>p>img:only-child{padding:14px}.prose .process+h2{margin-top:104px}}
