@font-face{font-family:Geist Pixel;src:url(/fonts/GeistPixel-Square.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Geist;src:url(/fonts/Geist-Regular.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Geist;src:url(/fonts/Geist-Medium.woff2) format("woff2");font-weight:500;font-display:swap}:root{--bg: oklch(96.8% .007 247.896);--ink: #171717;--muted: #5c5c5c;--faint: #8a8a8a;--accent: #006fd7;--line: rgba(23, 23, 23, .1);--sans: "Geist", ui-sans-serif, system-ui, sans-serif;--mono: "Geist Mono", ui-monospace, "SF Mono", monospace;--pixel: "Geist Pixel", "Geist Mono", ui-monospace, monospace;--col: 680px;--pad-x: 24px;--gap-section: clamp(72px, 12vh, 112px)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:clip}body{font-family:var(--sans);font-size:17px;line-height:1.55;letter-spacing:-.01em;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:#006fd724}.page{max-width:calc(var(--col) + 2 * var(--pad-x));margin:0 auto;padding:clamp(52px,11vh,104px) var(--pad-x) 96px}.meta{font-family:var(--mono);font-size:11.5px;font-weight:400;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}a{font-family:var(--pixel);color:var(--ink);text-decoration:underline;text-underline-offset:3px}a:hover{color:var(--accent)}.cta a,.site-footer a{font-size:15px;letter-spacing:0}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}h2{font-family:var(--pixel);font-size:16px;font-weight:400;letter-spacing:0}section{margin-top:var(--gap-section)}.hero .avatar{width:60px;height:60px;object-fit:cover;display:block;margin-bottom:14px;-webkit-mask-image:url(/masks/avatar-mask.svg);mask-image:url(/masks/avatar-mask.svg);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.hero-name{font-family:var(--pixel);font-size:18px;font-weight:400;letter-spacing:0;line-height:1.3;color:var(--ink);margin:0 0 8px}.hero h1{font-family:var(--pixel);font-size:clamp(20px,3.2vw,24px);font-weight:400;letter-spacing:0;line-height:1.4}.hero h1 .rocket-word{display:inline-block;transition:margin-left .35s cubic-bezier(.22,1,.36,1)}.hero h1 .rocket-word.roomy{margin-left:34px}.hero h1 .head-term-slot{display:inline-block;width:40px;height:1em;vertical-align:middle}.h2-lg{font-size:24px}.head-icon-slot{display:inline-block;width:34px;height:1em;vertical-align:middle;margin-right:8px}@media(max-width:560px){.hero h1 br{display:none}}.hero .sub{margin-top:16px;color:var(--muted);max-width:58ch;text-wrap:pretty}.hero .meta{display:block;margin-bottom:28px}.hero .cta{margin-top:28px;display:flex;gap:24px;flex-wrap:wrap}.hero .cta a{display:inline-flex;align-items:center;gap:8px}.hero>*{animation:rise .5s cubic-bezier(.22,1,.36,1) both}.hero>*:nth-child(2){animation-delay:.07s}.hero>*:nth-child(3){animation-delay:.14s}.hero>*:nth-child(4){animation-delay:.21s}.hero>*:nth-child(5){animation-delay:.28s}.hero>*:nth-child(6){animation-delay:.35s}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.projects-rail{--cover-width: min(280px, 68vw)}.project-group-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.rail-chevron-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center;background:none;border:none;padding:4px;color:var(--ink);cursor:pointer}.rail-chevron-btn:hover{color:var(--accent)}.rail-chevron-btn:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.rail-chevron{display:block;transform:scaleX(1)}.rail-chevron--inverted{transform:scaleX(-1)}.work-strip{list-style:none;display:flex;align-items:flex-start;gap:48px;margin-top:0;width:100vw;margin-left:calc(50% - 50vw);padding-inline:max(var(--pad-x),calc(50vw - var(--col) / 2));padding-right:max(var(--pad-x),calc(50vw - var(--col) / 2));overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scroll-padding-inline:max(var(--pad-x),calc(50vw - var(--col) / 2));scrollbar-width:none;scroll-behavior:smooth}.work-strip::-webkit-scrollbar{display:none}.project-group{flex:0 0 auto;scroll-snap-align:start;display:flex;flex-direction:column;gap:28px}.project-group-cards{list-style:none;display:flex;gap:28px;margin:0;padding:0;overflow:visible}.project-group--past{opacity:.6;transition:opacity .35s ease-out}.project-group--past.is-current{opacity:1}.past-work-grid{list-style:none;display:grid;grid-template-rows:repeat(2,auto);grid-auto-flow:column;grid-auto-columns:var(--cover-width);gap:28px;width:fit-content;margin:0;padding:0;overflow:visible}.past-work-tile{min-width:0;width:var(--cover-width);overflow:visible}.past-work-tile .work-cover-link{display:block;overflow:visible}.past-work-tile--private .work-cover-link{position:relative;overflow:visible;cursor:default}.past-work-tile--private:hover .toolbox-tooltip,.past-work-tile--private:focus-visible .toolbox-tooltip,.past-work-tile--private:active .toolbox-tooltip{opacity:1;visibility:visible;transform:translate(-50%) translateY(0)}.past-work-tile .work-cover{aspect-ratio:4 / 3;width:100%;margin-bottom:0}.past-work-tile:nth-child(4n+2) .work-cover{-webkit-mask-image:url(/masks/cover-mask-bl.svg);mask-image:url(/masks/cover-mask-bl.svg)}.past-work-tile:nth-child(4n+3) .work-cover{-webkit-mask-image:url(/masks/cover-mask-br.svg);mask-image:url(/masks/cover-mask-br.svg)}.past-work-tile:nth-child(4n) .work-cover{-webkit-mask-image:url(/masks/cover-mask-tl.svg);mask-image:url(/masks/cover-mask-tl.svg)}.work-item{flex:0 0 auto;width:var(--cover-width);scroll-snap-align:start;overflow:visible}.work-cover{display:block;width:100%;aspect-ratio:4 / 3;object-fit:cover;margin-bottom:12px;-webkit-mask-image:url(/masks/cover-mask.svg);mask-image:url(/masks/cover-mask.svg);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;transform:scale(1);transform-origin:center center;transition:opacity .25s ease-out,transform .25s ease-out}.project-group-cards>:nth-child(4n+2) .work-cover{-webkit-mask-image:url(/masks/cover-mask-bl.svg);mask-image:url(/masks/cover-mask-bl.svg)}.project-group-cards>:nth-child(4n+3) .work-cover{-webkit-mask-image:url(/masks/cover-mask-br.svg);mask-image:url(/masks/cover-mask-br.svg)}.project-group-cards>:nth-child(4n) .work-cover{-webkit-mask-image:url(/masks/cover-mask-tl.svg);mask-image:url(/masks/cover-mask-tl.svg)}.project-group-cards:hover .work-item:not(:hover) .work-cover,.past-work-grid:hover .past-work-tile:not(:hover) .work-cover{opacity:.5;transform:scale(.98)}.project-group-cards .work-item:hover .work-cover,.past-work-grid .past-work-tile:hover .work-cover{opacity:1;transform:scale(1.04)}.work-cover--placeholder{background:#111}.work-item .meta{display:block;margin-bottom:4px}.work-item .name{font-family:var(--pixel);font-size:15px;font-weight:400;letter-spacing:0;line-height:1.3}.work-item .line{color:var(--muted);margin-top:2px;max-width:36ch;font-size:14px;text-wrap:pretty}@media(max-width:560px){.projects-rail{--cover-width: 100%}.work-strip{flex-direction:column;width:100%;margin-left:0;padding-inline:0;overflow-x:visible;overscroll-behavior-x:auto;scroll-snap-type:none;gap:var(--gap-section)}.project-group{width:100%;scroll-snap-align:none}.project-group-cards{flex-direction:column;gap:32px}.work-item{width:100%;scroll-snap-align:none}.project-group--past{opacity:1}.rail-chevron-btn{display:none}.past-work-grid{grid-template-rows:none;grid-auto-flow:row;grid-template-columns:repeat(2,1fr);grid-auto-columns:unset;width:100%;gap:16px}.past-work-tile{width:100%}}@media(max-width:560px)and (hover:none){.project-group-cards:hover .work-item:not(:hover) .work-cover,.past-work-grid:hover .past-work-tile:not(:hover) .work-cover,.project-group-cards .work-item:hover .work-cover,.past-work-grid .past-work-tile:hover .work-cover{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.work-strip{scroll-behavior:auto}.project-group--past,.work-cover{transition:none}.work-cover,.project-group-cards:hover .work-item:not(:hover) .work-cover,.past-work-grid:hover .past-work-tile:not(:hover) .work-cover,.project-group-cards .work-item:hover .work-cover,.past-work-grid .past-work-tile:hover .work-cover{transform:none}}.toolbox-grid{margin-top:28px;display:grid;grid-template-columns:repeat(auto-fill,minmax(36px,1fr));gap:8px;width:100%;overflow:visible}.toolbox-item{position:relative;display:flex;align-items:center;justify-content:center;padding:0;overflow:visible;background:transparent;text-decoration:none;color:var(--ink)}.toolbox-tooltip{position:absolute;bottom:calc(100% + 7px);left:50%;transform:translate(-50%) translateY(3px);white-space:nowrap;pointer-events:none;z-index:2;opacity:0;visibility:hidden;padding:5px 10px;border-radius:6px;font-family:var(--sans);font-size:12px;font-weight:500;line-height:1.3;letter-spacing:-.01em;color:var(--ink);background:#fff;box-shadow:0 2px 10px #17171714,0 0 0 1px #1717170f;transition:opacity .16s ease-out,visibility .16s ease-out,transform .16s ease-out}.toolbox-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:4px solid transparent;border-top-color:#fff;filter:drop-shadow(0 1px 0 rgba(23,23,23,.06))}.toolbox-item:hover .toolbox-tooltip,.toolbox-item:focus-visible .toolbox-tooltip,.toolbox-item:active .toolbox-tooltip{opacity:1;visibility:visible;transform:translate(-50%) translateY(0)}.toolbox-tile{position:relative;width:32px;height:32px;flex-shrink:0}.toolbox-tile-bg{position:absolute;inset:0;background:#fff;-webkit-mask-image:var(--toolbox-mask);mask-image:var(--toolbox-mask);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.toolbox-icon{position:relative;z-index:1;display:block;width:100%;height:100%;object-fit:contain;-webkit-mask-image:var(--toolbox-mask);mask-image:var(--toolbox-mask);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}@media(max-width:560px){.toolbox-grid{grid-template-columns:repeat(auto-fill,36px);gap:8px}.toolbox-tile{width:36px;height:36px}}@media(prefers-reduced-motion:reduce){.toolbox-tooltip{transition:none}}.about p{color:var(--muted);max-width:62ch;text-wrap:pretty}.about p+p{margin-top:16px}.about p strong{color:var(--ink);font-weight:500}.quote{margin-top:28px;max-width:var(--col)}.quote-stage{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:28px;align-items:start}.quote-stack{display:grid;max-width:48ch}.quote-portrait-stack{display:grid;flex-shrink:0}.quote-portrait-stack .quote-portrait{grid-area:1 / 1;width:88px;height:88px;object-fit:cover;opacity:0;transition:opacity .45s ease-out;-webkit-mask-image:var(--quote-mask);mask-image:var(--quote-mask);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.quote-portrait-stack .quote-portrait.active{opacity:1}.quote-stack blockquote{grid-area:1 / 1;opacity:0;transition:opacity .45s ease-out}.quote-stack blockquote.active{opacity:1}.quote p{color:var(--ink)}.quote-attribution{margin-top:10px}.quote-attribution:has(.quote-company-logo){display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;gap:10px 14px;margin-top:12px}.quote-company-logo{display:block;height:22px;width:auto;opacity:.85;flex-shrink:0}.quote-picker{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.quote-picker button{padding:0;border:none;background:none;cursor:pointer;opacity:.38;transition:opacity .15s ease-out,transform .15s ease-out}.quote-picker button:hover{opacity:.72}.quote-picker button.active,.quote-picker button[aria-selected=true]{opacity:1;transform:translateY(-2px)}.quote-picker-face{display:block;width:40px;height:40px;object-fit:cover;-webkit-mask-image:var(--quote-mask);mask-image:var(--quote-mask);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.quote-next{margin-top:14px;background:none;border:none;cursor:pointer;padding:4px 0;color:var(--faint);transition:color .15s ease-out}.quote-next:hover{color:var(--accent)}@media(max-width:560px){.quote-stage{grid-template-columns:1fr}.quote-portrait-stack{order:-1}.quote-portrait-stack .quote-portrait{width:72px;height:72px}.quote-picker{gap:8px}.quote-company-logo{height:20px}}@media(prefers-reduced-motion:reduce){.quote-stack blockquote,.quote-portrait-stack .quote-portrait,.quote-picker button{transition:none}}.site-footer{margin-top:var(--gap-section);padding-top:20px;border-top:1px solid var(--line);display:flex;gap:24px;flex-wrap:wrap;align-items:baseline}.site-footer .spacer{flex:1}.signature{font-size:15px;color:var(--ink);-webkit-user-select:none;user-select:none}@media(max-width:767px){:root{--gap-section: clamp(56px, 10vh, 88px)}.page{padding-bottom:72px}.hero h1 .head-term-slot{width:32px}.hero h1 .rocket-word.roomy{margin-left:28px}.hero .cta{gap:16px 20px}.site-footer .spacer{display:none}.signature{flex-basis:100%;text-align:right}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero>*{animation:none}.cover-preview{transition:opacity .01s linear;transform:none}}.project-page{padding-top:clamp(40px,8vh,88px)}.back-link{display:inline-block;margin-bottom:clamp(40px,9vh,96px)}.work-item .name a,.back-link,.pj-next a{text-decoration:none}.work-item .name a:hover,.back-link:hover,.pj-next a:hover{text-decoration:underline}.work-cover-link{display:block;overflow:visible}.pj-logo{display:block;height:52px;width:auto;max-width:440px;margin-bottom:22px}.pj-meta{display:flex;flex-wrap:wrap;gap:6px 16px;margin-bottom:18px}.pj-meta span{font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}.pj-title{font-family:var(--pixel);font-size:clamp(22px,3.6vw,30px);font-weight:400;letter-spacing:0;line-height:1.4;max-width:24ch;text-wrap:balance}.pj-sub{margin-top:16px;color:var(--muted);max-width:56ch;font-size:18px;text-wrap:pretty}.pj-links{margin-top:22px;display:flex;flex-wrap:wrap;gap:10px 20px;align-items:baseline}.pj-tools{color:var(--faint)}.pj-cover{margin-top:clamp(40px,7vh,72px)}.pj-cover img,.pj-fig img,.pj-fig--video video{display:block;width:100%;border-radius:0}.pj-metrics{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:clamp(48px,8vh,80px);padding-top:28px;border-top:1px solid var(--line)}.pj-metric-value{display:block;font-family:var(--pixel);font-size:clamp(22px,3vw,30px);line-height:1.1;color:var(--ink)}.pj-metric-label{display:block;margin-top:10px;max-width:22ch}.pj-overview{margin-top:clamp(56px,10vh,104px)}.pj-kicker{display:block;margin-bottom:16px}.pj-overview p,.pj-block p{color:var(--muted);max-width:62ch;text-wrap:pretty}.pj-overview p+p,.pj-block p+p{margin-top:16px}.pj-block{margin-top:clamp(56px,10vh,104px)}.pj-block-heading{font-family:var(--pixel);font-size:20px;font-weight:400;letter-spacing:0;line-height:1.4;margin-bottom:18px;max-width:28ch;text-wrap:balance}.pj-block>.pj-fig{margin-top:28px}.pj-figs{margin-top:28px;display:flex;flex-wrap:wrap;gap:24px}.pj-fig{flex:0 1 320px}.pj-fig--wide{flex:1 1 100%;max-width:none}.pj-fig figcaption{margin-top:10px}.pj-soon{margin-top:clamp(48px,8vh,80px);padding-top:28px;border-top:1px solid var(--line);color:var(--faint)}.pj-next{margin-top:clamp(64px,12vh,120px);padding-top:24px;border-top:1px solid var(--line)}.pj-next a{display:inline-flex;flex-direction:column;gap:6px}.pj-next-name{font-family:var(--pixel);font-size:22px;color:var(--ink)}.pj-next a:hover .pj-next-name{color:var(--accent)}@media(max-width:560px){.pj-metrics{grid-template-columns:1fr;gap:20px}}
