@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:100 700;font-display:swap;src:url(/fonts/plex-sans-var.woff2)format("woff2-variations"),url(/fonts/plex-sans-var.woff2)format("woff2")}@font-face{font-family:IBM Plex Serif;font-style:normal;font-weight:300;font-display:swap;src:url(/fonts/plex-serif-300.woff2)format("woff2")}@font-face{font-family:IBM Plex Serif;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-serif-400.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-mono-400.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plex-mono-500.woff2)format("woff2")}:root{color-scheme:dark;--paper:#101214;--ink:#eceeea;--body:#bfc3be;--muted:#8d9290;--rule:#2c3033;--rule-light:#212528;--tick:#474c4f;--accent:#5db39b;--sans:"IBM Plex Sans", system-ui, -apple-system, sans-serif;--serif:"IBM Plex Serif", Georgia, "Times New Roman", serif;--mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:16px;line-height:1.6}a{color:var(--ink);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{color:var(--accent)}a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}::selection{background:var(--accent);color:var(--paper)}.wrap{max-width:1440px;margin:0 auto;padding:40px 64px 72px;overflow-x:clip}.label{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0;font-size:12px;font-weight:400}.masthead{border-bottom:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:24px;padding-bottom:16px;display:flex}.masthead .wordmark{color:var(--ink);letter-spacing:.14em;font-weight:500}.hero{isolation:isolate;flex-direction:column;gap:40px;padding:112px 0 96px;display:flex;position:relative}.hero>:not(.hero-art){z-index:1;position:relative}.hero{clip-path:inset(-600px -600px 0)}.hero h1{font-family:var(--serif);letter-spacing:-.015em;text-wrap:balance;max-width:880px;margin:0;font-size:clamp(38px,5vw,68px);font-weight:300;line-height:1.12}.hero p{max-width:620px;color:var(--body);margin:0;font-size:19px;line-height:1.65}.motif{max-width:1000px;padding-top:24px}.motif .bars{align-items:flex-end;gap:7px;height:34px;display:flex}.motif .bars span{background:var(--ink);width:2px;height:34px}.motif .bars span.low{background:var(--tick);height:11px}.motif .bars span.on{background:var(--accent)}.motif .rail{background:var(--rule);height:1px;margin-top:10px}.hero-art{z-index:0;pointer-events:none;width:min(64%,860px);height:auto;position:absolute;top:24px;right:0;overflow:visible;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 34%);mask-image:linear-gradient(90deg,#0000 0,#000 34%);-webkit-mask-clip:no-clip;mask-clip:no-clip}.hero-art .trace,.hero-art .trace path{fill:none;stroke:var(--tick);stroke-width:1.5px;stroke-linejoin:round}.hero-art .trace.fine,.hero-art .trace.fine path{stroke-width:1px}.hero-art .via circle{fill:var(--paper);stroke:var(--muted);stroke-width:1.25px}.hero-art .pad rect{fill:var(--tick)}.hero-art .part .cut{fill:var(--paper)}.hero-art .part path{fill:none;stroke:var(--muted);stroke-width:1.25px;stroke-linecap:round;stroke-linejoin:round}.hero-art .part .spot{fill:var(--muted)}.hero-art .chip rect,.hero-art .chip path{fill:var(--paper);stroke:var(--muted);stroke-width:1.25px}.hero-art .chip .mark{fill:var(--muted);stroke:none}.hero-art .wafer path{fill:none;stroke:var(--muted);stroke-width:1.25px}.hero-art .wafer .dies{stroke:var(--tick);stroke-width:1px}.hero-art .thread{fill:none;stroke:var(--muted);stroke-width:1.25px;stroke-linecap:round}.hero-art .eye{fill:none;stroke:var(--muted);stroke-width:1.25px}.hero-art .star path{fill:none;stroke:var(--ink);stroke-width:1.5px;stroke-linecap:round}.hero-art .dot.accent{fill:var(--accent)}.hero-art .dot.ink{fill:var(--ink)}.hero-art .star,.hero-art .wafer{transform-box:fill-box;transform-origin:50%}@supports (animation-timeline:scroll()){@media (prefers-reduced-motion:no-preference){.hero-art .draw{stroke-dasharray:1 1}.hero-art .draw.a{--from:.55}.hero-art .draw.b{--from:.8}.hero-art .draw.c,.hero-art .draw.d{--from:1}.hero-art .draw,.hero-art .layer,.hero-art .star,.hero-art .wafer{animation-timing-function:linear;animation-fill-mode:both;animation-timeline:scroll(root);animation-range:0 85vh}.hero-art .draw{animation-name:hero-draw}.hero-art .draw.d{animation-range:0 45vh}.hero-art .layer.far{animation-name:hero-drift-far}.hero-art .layer.mid{animation-name:hero-drift-mid}.hero-art .layer.near{animation-name:hero-drift-near}.hero-art .star{animation-name:hero-spin}.hero-art .wafer{animation-name:hero-turn}}}@keyframes hero-draw{0%{stroke-dashoffset:var(--from,.6)}to{stroke-dashoffset:0}}@keyframes hero-drift-far{to{transform:translateY(-24px)}}@keyframes hero-drift-mid{to{transform:translateY(-64px)}}@keyframes hero-drift-near{to{transform:translateY(-130px)}}@keyframes hero-spin{to{transform:rotate(150deg)}}@keyframes hero-turn{to{transform:rotate(-40deg)}}.wrap{--x0:calc(100cqw - min(64cqw, 860px) * .6875);--c0:248px;--col3:calc((100cqw - var(--c0) - 80px) / 3);--t0:calc(var(--c0) + 14px);--m:calc(var(--c0) + var(--col3) + 54px);--t2:calc(var(--c0) + 2 * var(--col3) + 94px);--g:calc(var(--c0) + (min(100cqw - var(--c0), 900px) - 56px) / 2 + 28px);--rail:calc(var(--c0) - 72px)}.section,.footer{position:relative;container-type:inline-size}.section>:not(.crumb,.fan),.footer>:not(.crumb){z-index:1;position:relative}.crumb{z-index:0;top:0;bottom:0;left:var(--x);pointer-events:none;--jog:calc((var(--to) - var(--x)) * var(--dir));--b:16px;--jh:0px;--rx:0px;width:0;position:absolute}.crumb.has-jog{--jh:calc(2 * var(--b))}.crumb.jog-top{--rx:calc(var(--to) - var(--x))}.crumb .run{top:0;bottom:var(--jh);left:calc(var(--rx) - .5px);background:var(--tick);width:1px;position:absolute}.crumb.jog-top .run{top:var(--jh);bottom:0}.crumb .jog{top:calc(100% - var(--jh));height:var(--jh);left:calc(min(0, var(--dir)) * var(--jog));width:var(--jog);position:absolute}.crumb.jog-top .jog{top:0}.crumb .jog:before,.crumb .jog:after{content:"";width:calc(var(--b) * 1.41421);background:var(--tick);transform-origin:0 0;height:1px;transform:rotate(calc(90deg - var(--dir) * 45deg));position:absolute}.crumb .jog:before{top:0;left:calc(50% - var(--dir) * 50%)}.crumb .jog:after{top:var(--b);left:calc(50% + var(--dir) * (50% - var(--b)))}.crumb .jog .h{top:var(--b);left:var(--b);right:var(--b);background:var(--tick);height:1px;position:absolute}.crumb.dotted .run{width:1.5px;left:calc(var(--rx) - .75px);background:repeating-linear-gradient(to bottom, var(--muted) 0 1.5px, transparent 1.5px 7px)}.crumb.dotted .jog:before,.crumb.dotted .jog:after,.crumb.dotted .jog .h{background:repeating-linear-gradient(to right, var(--muted) 0 1.5px, transparent 1.5px 7px);height:1.5px}.crumb .via{left:-4.5px;top:calc(100% - var(--jh) - 4.5px);box-sizing:border-box;border:1.25px solid var(--muted);background:var(--paper);border-radius:50%;width:9px;height:9px;position:absolute}.crumb.jog-top .via{display:none}.crumb .pad{top:-4px;left:calc(var(--rx) - 4px);background:var(--muted);border-radius:1.5px;width:8px;height:8px;position:absolute}.crumb .glyph{display:block;position:absolute}.crumb .glyph.dot{background:var(--accent);width:10px;height:10px;left:calc(var(--rx) + 14px);bottom:calc(var(--jh) + 14px);border-radius:50%}.crumb .glyph.eye{width:26px;height:18px;left:calc(var(--rx) - 42px);top:calc(var(--jh) + 40px)}.crumb .glyph.eye path{fill:none;stroke:var(--muted);stroke-width:1.2px}.crumb .glyph.eye circle{fill:var(--ink)}.footer .crumb{height:40px;bottom:auto}.crumb .glyph.ground{width:24px;height:18px;top:100%;left:-12px}.crumb .glyph.ground path{fill:none;stroke:var(--muted);stroke-width:1.25px;stroke-linecap:round}.crumb .sym{left:calc(var(--rx) - var(--sx,0px));top:var(--sy);position:absolute;overflow:visible}.crumb .sym.source{--sx:16px;margin-top:-18px}.crumb .sym.switch{--sx:16px;margin-top:-22px}.crumb .sym.transformer{--sx:8px;margin-top:-34px}.crumb .sym .cut{fill:var(--paper);stroke:none}.crumb .sym path,.crumb .sym circle{fill:none;stroke:var(--muted);stroke-width:1.25px;stroke-linecap:round;stroke-linejoin:round}.crumb .sym .contact{fill:var(--paper)}.crumb .sym .spot{fill:var(--ink);stroke:none}.crumb .sym .spot.accent{fill:var(--accent)}.crumb .sym .lever{stroke:var(--ink);transform-box:fill-box;transform-origin:0 100%}.crumb.dotted .sym.switch .lever{stroke-width:1.5px}.fan{z-index:0;top:0;bottom:0;left:var(--t0);width:calc(var(--t2) - var(--t0));pointer-events:none;position:absolute}.fan-out{--fh:56px;height:56px;position:absolute;top:0;left:0;right:0}.fan i{background:var(--tick);display:block;position:absolute}.fan .v{width:1px;margin-left:-.5px}.fan .v.trunk{height:8px;top:0;left:50%}.fan .v.mid{height:calc(var(--fh) - 8px);top:8px;left:50%}.fan .v.l{height:calc(var(--fh) - 40px);top:40px;left:0}.fan .v.r{height:calc(var(--fh) - 40px);top:40px;left:100%}.fan .h{height:1px;top:24px}.fan .h.l{left:16px;right:calc(50% + 16px)}.fan .h.r{left:calc(50% + 16px);right:16px}.fan .d{transform-origin:0 0;width:22.627px;height:1px}.fan .d.l1{top:8px;left:50%;transform:rotate(135deg)}.fan .d.l2{top:24px;left:16px;transform:rotate(135deg)}.fan .d.r1{top:8px;left:50%;transform:rotate(45deg)}.fan .d.r2{top:24px;left:calc(100% - 16px);transform:rotate(45deg)}.fan-star{width:22px;height:22px;margin:-11px 0 0 -11px;position:absolute;top:8px;left:50%;overflow:visible}.fan-star path{fill:none;stroke:var(--ink);stroke-width:1.4px;stroke-linecap:round}.fan .fan-straight{display:none}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.crumb,.fan{--at:85vh}.crumb.late,.fan{--at:50vh}.crumb .run,.crumb .via,.crumb .pad,.crumb .glyph,.crumb .sym,.crumb .jog:before,.crumb .jog:after,.crumb .jog .h,.fan-out,.fan-star,.fan .fan-straight{animation-timing-function:linear;animation-fill-mode:both;animation-timeline:view();animation-range:cover calc(100vh - var(--at)) cover calc(100% - var(--at))}.crumb .run{animation-name:trail-down}.crumb.fast .run{animation-range:cover calc(100vh - var(--at)) cover calc(125vh - var(--at))}.crumb.catchup .run{animation-range:cover 50vh cover calc(100% - 85vh)}.crumb .jog{view-timeline:--trail-jog block}.crumb .jog:before,.crumb .jog:after,.crumb .jog .h{animation-name:trail-along;animation-timeline:--trail-jog}.crumb[style*="--dir: -1"] .jog .h{animation-name:trail-along-rtl}.crumb .via,.crumb .pad,.crumb .glyph,.crumb .sym{animation-name:trail-pop}.crumb .sym.switch{view-timeline:--trail-switch block}.crumb .sym.switch .lever{animation-name:switch-close;animation-timing-function:linear;animation-fill-mode:both;animation-range:cover calc(100vh - var(--at)) cover calc(100vh - var(--at) + 20vh)}.crumb .switch .lever{animation-timeline:--trail-switch}.fan-star{animation-name:trail-spin-in}.fan-out{animation-name:fan-down}.fan .fan-straight{animation-name:trail-down}}}@keyframes switch-close{0%{transform:rotate(0)}70%{stroke:var(--ink)}to{stroke:var(--accent);transform:rotate(-21.4deg)}}@keyframes trail-down{0%{clip-path:inset(0 -2px 100%)}to{clip-path:inset(0 -2px)}}@keyframes trail-along-rtl{0%{clip-path:inset(-2px 0 -2px 100%)}to{clip-path:inset(-2px 0)}}@keyframes trail-along{0%{clip-path:inset(-2px 100% -2px 0)}to{clip-path:inset(-2px 0)}}@keyframes trail-pop{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes trail-spin-in{0%{opacity:0;transform:scale(0)rotate(-120deg)}to{opacity:1;transform:none}}@keyframes fan-down{0%{clip-path:inset(0 -6px 100%)}to{clip-path:inset(-6px)}}.section{border-top:1px solid var(--rule);flex-wrap:wrap;gap:48px;padding:56px 0;display:flex}.section>.label{flex:0 0 200px;padding-top:6px}.section>.content{flex:999 520px;min-width:0}.lede{max-width:700px;margin:0;font-size:20px;line-height:1.6}.sub{color:var(--body);max-width:700px;margin:24px 0 0;font-size:17px;line-height:1.7}.portfolio{border-collapse:collapse;text-align:left;width:100%}.portfolio thead th{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--rule);padding:0 24px 12px 0;font-size:11px;font-weight:400}.portfolio .c-co{width:28%}.portfolio .c-what{width:32%}.portfolio .c-why{width:40%}.portfolio thead th:last-child,.portfolio tbody td:last-child{padding-right:0}.portfolio tbody th,.portfolio tbody td{vertical-align:top;text-align:left;border-bottom:1px solid var(--rule-light);padding:26px 24px 26px 0;font-size:15px;font-weight:400;line-height:1.6}.co-logo-link{text-decoration:none;display:inline-block}.co-logo{height:var(--h,28px);aspect-ratio:var(--ratio);background-color:var(--tint,var(--ink));-webkit-mask:var(--logo) left center / contain no-repeat;mask:var(--logo) left center / contain no-repeat;transition:background-color .16s;display:block}.co-meta{font-family:var(--mono);letter-spacing:.08em;color:var(--muted);margin-top:18px;font-size:12px;line-height:1.8}.co-site{color:var(--muted);text-decoration:none}.co-site .arrow{margin-left:.35em;transition:transform .16s;display:inline-block}.co:has(.co-logo-link:hover,.co-logo-link:focus-visible,.co-site:hover) .co-logo{background-color:var(--accent)}.co:has(.co-logo-link:hover,.co-logo-link:focus-visible,.co-site:hover) .co-site{color:var(--accent)}.co:has(.co-logo-link:hover,.co-logo-link:focus-visible,.co-site:hover) .arrow{transform:translate(2px,-2px)}.previously{margin-top:48px}.previously>.label{margin-bottom:20px}.prev-row{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule-light);grid-template-columns:28% minmax(0,1fr);gap:0;padding:26px 0;display:grid}.prev-row .co{padding-right:24px}.prev-row .co-logo{background-color:var(--body)}.prev-row p{color:var(--body);max-width:640px;margin:0;font-size:15px;line-height:1.6}.prev-row p+p{margin-top:10px}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.co-logo,.co-site .arrow{transition:none}}.col-what{color:var(--body)}.triple{grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;display:grid}.triple h3{margin:0;font-size:17px;font-weight:500}.triple p{color:var(--body);margin:12px 0 0;font-size:15px;line-height:1.65}.tick-rule{background:var(--accent);width:28px;height:2px;margin-bottom:12px}.people{grid-template-columns:repeat(2,minmax(0,1fr));gap:56px;max-width:900px;display:grid}.person{flex-direction:column;display:flex}.people h3{font-family:var(--serif);margin:0 0 10px;font-size:24px;font-weight:400;line-height:1.25}.people h3 .honorific{color:var(--body);margin-bottom:2px;font-size:15px;line-height:1.4;display:block}.people h3 .name{display:block}.people .role{margin-bottom:8px}.people p{color:var(--body);margin:8px 0 0;font-size:15px;line-height:1.7}.person-link{font-family:var(--mono);letter-spacing:.08em;color:var(--muted);align-self:flex-start;margin:12px 0 40px;font-size:12px;text-decoration:none}.person-link .arrow{margin-left:.35em;transition:transform .16s;display:inline-block}.person-link:hover,.person-link:focus-visible{color:var(--accent)}.person-link:hover .arrow,.person-link:focus-visible .arrow{transform:translate(2px,-2px)}@media (prefers-reduced-motion:reduce){.person-link .arrow{transition:none}}.portrait{aspect-ratio:360/400;background-color:var(--body);width:100%;max-width:220px;-webkit-mask:var(--src) center / contain no-repeat;mask:var(--src) center / contain no-repeat;margin-top:auto}.footer{border-top:1px solid var(--ink);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:32px;padding-top:56px;display:flex}.footer .email{font-family:var(--serif);margin-top:8px;font-size:26px;line-height:1.3;text-decoration:none;display:inline-block}.footer .email:hover{text-decoration:underline}.footer .legal{font-family:var(--mono);color:var(--muted);text-align:right;margin:0;font-size:12px;font-style:normal;line-height:1.9}@media (width<=900px){.wrap{padding:28px 24px 56px}.hero{padding:72px 0 64px}.hero-art .spine{display:none}.hero-art{width:min(100% + 16px,576px);top:96px;right:-16px;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 42%);mask-image:linear-gradient(90deg,#0000 0,#000 42%)}.wrap{--x0:2px}.crumb{left:var(--x0);--jog:0px;--jh:0px;--rx:0px}.crumb .jog,.crumb .via,.crumb .glyph.eye,.crumb .sym.transformer{display:none}.crumb .glyph.dot{left:10px}.footer .crumb{height:18px}.fan{left:var(--x0);width:0}.fan-out{display:none}.fan .fan-straight{width:1px;display:block;top:0;bottom:0;left:-.5px}.triple>div,.person{view-timeline:--stub block;--stub-y:1px;position:relative}.person{--stub-y:38px}.triple>div:before,.person:before{content:"";left:-26px;top:var(--stub-y);background:var(--tick);width:26px;height:1px;position:absolute}.triple>div:after,.person:after{content:"";left:-30px;top:calc(var(--stub-y) - 4px);box-sizing:border-box;border:1.25px solid var(--muted);background:var(--paper);border-radius:50%;width:8px;height:8px;position:absolute}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.triple>div:before,.person:before,.triple>div:after,.person:after{animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--stub;animation-range:cover 15vh cover calc(15vh + 60px)}.triple>div:before,.person:before{animation-name:trail-along}.triple>div:after,.person:after{animation-name:trail-pop}}}.section{gap:24px;padding:44px 0 44px 28px}.section>.label{flex:100%}.triple{grid-template-columns:1fr;gap:32px}.people{grid-template-columns:1fr;gap:40px}.footer .legal{text-align:left}}@media (width<=640px){.wrap{padding-left:16px;padding-right:16px}.hero p{font-size:17px}.lede{font-size:18px}.footer .email{font-size:22px}.portfolio thead{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.portfolio,.portfolio tbody,.portfolio tr,.portfolio th,.portfolio td{width:auto;display:block}.portfolio tbody tr{border-bottom:1px solid var(--rule-light);padding:24px 0}.portfolio tbody tr:first-child{border-top:1px solid var(--rule)}.portfolio tbody th,.portfolio tbody td{border:0;padding:0}.portfolio tbody td{margin-top:16px}.prev-row{grid-template-columns:1fr}.prev-row .co{padding:0 0 16px}.portfolio tbody td:before{content:attr(data-label);font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:4px;font-size:11px;display:block}}
