@font-face{font-family:Host Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(/assets/host-grotesk-latin-ext-wght-normal-B8jkyusk.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Host Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(/assets/host-grotesk-latin-wght-normal-CBa0fl4q.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-property:overflow;transition-duration:1ms;transition-behavior:allow-discrete}:root,[data-theme=dark]{--color-paper: #0e0e10;--color-paper-2: #18181b;--color-ink: #f2f2f3;--color-ink-soft: rgba(242, 242, 243, .75);--color-muted: #9a9ba1;--color-rule: rgba(242, 242, 243, .14);--color-link: #f2f2f3;--color-link-line: rgba(242, 242, 243, .32);--color-focus: oklch(78% .006 270);--color-fab-border: rgba(255, 255, 255, .16);--color-shadow: rgba(0, 0, 0, .4);--color-scheme: dark}[data-theme=light]{--color-paper: #fcfcfc;--color-paper-2: #f3f3f3;--color-ink: #17181a;--color-ink-soft: rgba(23, 24, 26, .75);--color-muted: #6b6f76;--color-rule: rgba(23, 24, 26, .12);--color-link: #17181a;--color-link-line: rgba(23, 24, 26, .28);--color-focus: oklch(36% .006 270);--color-fab-border: rgba(0, 0, 0, .1);--color-shadow: rgba(0, 0, 0, .12);--color-scheme: light}:root{--font-display: "Host Grotesk Variable", "Host Grotesk", sans-serif;--font-body: "Geist Variable", "Geist", -apple-system, BlinkMacSystemFont, system-ui, "Segoe UI", sans-serif;--text-display: 1.875rem;--text-lg: 1.125rem;--text-md: 1rem;--text-sm: .9375rem;--text-meta: .8125rem;--text-xs: .6875rem;--leading-display: 1.15;--leading-snug: 1.35;--leading-body: 1.55;--leading-meta: 1.4;--leading-ui: 1.25;--space-2xs: 8px;--space-xs: 12px;--space-sm: 16px;--space-md: 24px;--space-lg: 32px;--space-xl: 40px;--space-2xl: 48px;--space-3xl: 64px;--lead: 640px;--case-lead: 800px;--case-nav-gap: 48px;--preview: 320px;--rule-w: 1px;--radius-md: 14px;--radius-avatar: 16px;--radius-lg: 999px;--section-gap: 64px;--block-gap: var(--space-xs);--section-title-gap: var(--space-md);--ease-out: cubic-bezier(.22, 1, .36, 1);--dur-fast: .15s;--dur: .28s}*,*:before,*:after{box-sizing:border-box}html,body{overflow-x:clip}html{color-scheme:var(--color-scheme);background:var(--color-paper)}body{margin:0;min-height:100svh;overflow-x:clip;background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-sm);font-weight:400;line-height:var(--leading-body);font-optical-sizing:auto;-webkit-font-smoothing:antialiased}html:not(.motion-pending) body{transition:background var(--dur) var(--ease-out),color var(--dur) var(--ease-out)}::selection{background:var(--color-ink);color:var(--color-paper)}img{max-width:100%;height:auto;display:block}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}h1,h2,h3{font-family:var(--font-display);font-style:normal;font-weight:700;letter-spacing:-.02em;line-height:var(--leading-display)}a{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-line);text-decoration-thickness:1px;text-underline-offset:3px;transition:text-decoration-color var(--dur-fast) var(--ease-out)}a:hover,a:focus-visible{text-decoration-color:var(--color-link)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.skip{position:absolute;left:var(--space-sm);top:var(--space-sm);z-index:100;padding:var(--space-2xs) var(--space-sm);background:var(--color-ink);color:var(--color-paper);text-decoration:none;font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;transform:translateY(-200%)}.skip:focus{transform:none}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.wrap{width:100%;max-width:var(--lead);margin:0 auto;padding:calc(var(--space-3xl) + var(--space-lg)) var(--space-md) var(--space-2xl);min-height:100svh;display:flex;flex-direction:column}.wrap:not(.wrap--case){--section-gap: 80px;--section-title-gap: 28px;max-width:707px;padding:160px 16px 40px}.wrap:not(.wrap--case) .intro{margin-bottom:var(--section-gap)}.wrap:not(.wrap--case)>.foot{padding-top:var(--space-2xl)}.wrap:not(.wrap--case) .intro__identity{margin-bottom:var(--space-lg)}.wrap:not(.wrap--case) .intro__actions{margin-top:var(--space-lg)}.wrap:not(.wrap--case) section>.cases--soft{margin-top:-12px}.wrap:not(.wrap--case) .intro h1,.wrap:not(.wrap--case) .cases--soft .case__title,.wrap:not(.wrap--case) .job__role{font-size:var(--text-sm);font-weight:500;line-height:var(--leading-snug)}.wrap:not(.wrap--case) .intro h1{font-size:1rem;margin-bottom:2px}.wrap:not(.wrap--case) .subtitle{line-height:var(--leading-snug)}.wrap:not(.wrap--case) .cases--soft .case__desc,.wrap:not(.wrap--case) .job__org,.wrap:not(.wrap--case) .work-card .work-card__desc{font-size:calc(var(--text-meta) + 1px);line-height:var(--leading-meta)}.wrap:not(.wrap--case) section>h2{font-family:var(--font-body);font-size:var(--text-meta);font-weight:400;letter-spacing:0;line-height:var(--leading-meta);color:var(--color-muted)}@media(max-width:767px){.wrap:not(.wrap--case){--section-gap: 64px;padding-top:64px}}.intro{margin:0 0 var(--section-gap)}.intro__identity{display:flex;align-items:center;gap:14px;min-width:0;margin:0 0 var(--space-xl)}.intro__avatar-btn{position:relative;flex:0 0 auto;display:block;margin:0;padding:0;border:0;border-radius:999px;background:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.intro__avatar-btn:focus-visible{outline:2px solid var(--color-ink);outline-offset:3px}.intro__wave{position:absolute;right:-11px;bottom:-5px;font-size:20px;line-height:1;opacity:0;pointer-events:none;transform-origin:70% 85%}.intro__avatar-btn.is-waving .intro__avatar{animation:avatar-squash .52s var(--ease-out)}.intro__avatar-btn.is-waving .intro__wave{animation:avatar-wave 1.5s cubic-bezier(.3,.7,.4,1)}@keyframes avatar-squash{0%{scale:1}18%{scale:1.08 .9}40%{scale:.95 1.05}65%{scale:1.02 .98}to{scale:1}}@keyframes avatar-wave{0%{opacity:0;translate:-12px 4px;scale:.3;rotate:-30deg}14%{opacity:1;translate:0 0;scale:1.12;rotate:0deg}22%{scale:1;rotate:0deg}32%{rotate:22deg}42%{rotate:-8deg}52%{rotate:22deg}62%{rotate:-4deg}72%{rotate:6deg}82%{opacity:1;translate:0 0;scale:1;rotate:0deg}to{opacity:0;translate:-12px 4px;scale:.3;rotate:-30deg}}@media(prefers-reduced-motion:reduce){.intro__avatar-btn.is-waving .intro__avatar{animation:none}.intro__avatar-btn.is-waving .intro__wave{animation:avatar-wave-still 1.5s linear}@keyframes avatar-wave-still{0%,to{opacity:0}15%,85%{opacity:1}}}.intro__avatar{flex:0 0 auto;width:52px;height:52px;border-radius:999px;object-fit:cover;object-position:center center;background:var(--color-paper-2);box-shadow:0 0 0 1px color-mix(in srgb,var(--color-rule) 80%,transparent);-webkit-user-drag:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.intro__avatar-btn:after{content:"";position:absolute;inset:0;border-radius:999px;background:url(/media/avatar-bw.jpg) center / cover no-repeat;pointer-events:none;transition:opacity var(--dur) var(--ease-out)}@media(hover:hover){.intro__avatar-btn:hover:after{opacity:0}}.intro__text{min-width:0}.intro h1{font-family:var(--font-body);font-size:var(--text-md);font-weight:600;letter-spacing:0;line-height:var(--leading-snug);margin:0 0 5px}.subtitle{margin:0;color:var(--color-muted);font-size:var(--text-sm);line-height:var(--leading-body)}.intro__bio{display:flex;flex-direction:column;gap:var(--space-sm)}.intro__bio p{margin:0;color:var(--color-ink-soft);text-wrap:pretty}.intro__actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:var(--space-md) 0 0}.btn{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:40px;padding:0 16px;border-radius:var(--radius-lg);font-family:var(--font-body);font-size:var(--text-meta);font-weight:500;line-height:1;text-decoration:none;white-space:nowrap;transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),opacity var(--dur-fast) var(--ease-out)}.btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.btn--primary{color:var(--color-paper);background:var(--color-ink);box-shadow:inset 0 1px #ffffff24,0 1px 2px #00000029}.btn--primary:hover{opacity:.88}.btn--ghost{border:1px solid color-mix(in srgb,var(--color-rule) 90%,transparent);color:var(--color-ink-soft);background:transparent}.btn[data-copy-email]{overflow:hidden;transition:width var(--dur) var(--ease-out),background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.btn__check{display:none;flex:0 0 auto;width:14px;height:14px;margin-right:6px}.btn.is-copied{color:var(--color-ink)}.btn.is-copied .btn__check{display:block;animation:btn-check-pop .32s cubic-bezier(.34,1.56,.64,1) both}.btn.is-copied .btn__check path{stroke-dasharray:1;stroke-dashoffset:1;animation:btn-check-draw .36s var(--ease-out) 80ms forwards}.btn.is-copied [data-copy-label]{animation:btn-label-in .24s var(--ease-out) both}@keyframes btn-check-pop{0%{opacity:0;transform:scale(.4) rotate(-12deg)}to{opacity:1;transform:none}}@keyframes btn-check-draw{to{stroke-dashoffset:0}}@keyframes btn-label-in{0%{opacity:0;transform:translate(-3px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.btn[data-copy-email]{transition:none}.btn.is-copied .btn__check,.btn.is-copied [data-copy-label]{animation:none}.btn.is-copied .btn__check path{stroke-dashoffset:0;animation:none}}.btn--ghost:hover{color:var(--color-ink);border-color:color-mix(in srgb,var(--color-ink) 22%,transparent);background:color-mix(in srgb,var(--color-ink) 4%,transparent)}section{margin:0 0 var(--section-gap)}section:last-of-type{margin-bottom:0}h2{font-size:var(--text-lg);margin:0 0 var(--section-title-gap)}h3{font-size:var(--text-md);margin:0 0 4px}section p:not(.case__desc):not(.job__when):not(.job__org){margin:0 0 var(--block-gap);color:var(--color-ink-soft);text-wrap:pretty}section p:not(.case__desc):not(.job__when):not(.job__org):last-child{margin-bottom:0}.jobs{list-style:none;margin:0;padding:0}.job{margin:0 0 var(--space-lg);padding:0}.job:last-child{margin-bottom:0}.job__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px var(--space-sm);margin:0 0 4px}.job__role{margin:0;font-family:var(--font-body);font-size:var(--text-md);font-weight:600;letter-spacing:0;line-height:var(--leading-snug);color:var(--color-ink)}.job__when{margin:0;font-size:var(--text-meta);line-height:var(--leading-meta);color:var(--color-muted);white-space:nowrap;font-variant-numeric:tabular-nums}.job__org{margin:0 0 var(--space-xs);font-size:var(--text-sm);line-height:var(--leading-meta);color:var(--color-muted)}.job__body{margin:0;line-height:var(--leading-body);color:var(--color-ink-soft)}.list{list-style:none;margin:0;padding:0}.list li{padding:var(--space-xs) 0;border-top:var(--rule-w) solid var(--color-rule)}.list li:first-child{border-top:0;padding-top:0}.list li:last-child{padding-bottom:0}.list a{text-decoration:none;display:inline-block;background-image:linear-gradient(currentColor,currentColor);background-size:0 1px;background-position:0 100%;background-repeat:no-repeat;transition:background-size var(--dur) var(--ease-out)}.list a:hover,.list a:focus-visible{background-size:100% 1px}.wrap:not(.wrap--case) section p.contact__lead{margin:0 0 14px;color:var(--color-ink-soft);text-wrap:pretty}.wrap:not(.wrap--case) section p.contact__intro{margin:0;color:var(--color-muted)}.contact__link{color:var(--color-ink);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--color-ink) 28%,transparent);text-decoration-thickness:1px;text-underline-offset:3px;transition:text-decoration-color var(--dur-fast) var(--ease-out)}.contact__link:hover,.contact__link:focus-visible{text-decoration-color:currentColor}.contact__link:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:3px}.contact__intro time{color:var(--color-ink-soft);font-variant-numeric:tabular-nums}.pixel-cat{position:relative;display:inline-block;margin:-6px 0 -6px 10px;color:var(--color-ink-soft);line-height:0;vertical-align:1px}.pixel-cat__art{display:block}.pixel-cat__frame--in,.pixel-cat__frame--awake,.pixel-cat__frame--blink,.pixel-cat__frame--tail{opacity:0}.pixel-cat:not([data-mood=day]):hover .pixel-cat__frame{animation:none;opacity:0}.pixel-cat:not([data-mood=day]):hover .pixel-cat__frame--awake{opacity:1}.pixel-cat:hover .pixel-cat__zs,.pixel-cat[data-mood=day] .pixel-cat__zs{visibility:hidden}.pixel-cat[data-mood=day] .pixel-cat__frame--out,.pixel-cat[data-mood=day] .pixel-cat__frame--in{animation:none;opacity:0}.pixel-cat[data-mood=day] .pixel-cat__frame--awake{opacity:1}.pixel-cat__zs{position:absolute;bottom:14px;left:30px;pointer-events:none}.pixel-cat__zs span{position:absolute;bottom:0;left:0;color:var(--color-muted);font-size:9px;font-weight:600;line-height:1;opacity:0}@media(prefers-reduced-motion:no-preference){.pixel-cat__frame--out{animation:cat-out 2.6s steps(1,end) infinite}.pixel-cat__frame--in{animation:cat-in 2.6s steps(1,end) infinite}.pixel-cat__zs span{animation:cat-z 3.6s ease-out infinite}.pixel-cat__zs span:nth-child(2){animation-delay:1.2s}.pixel-cat__zs span:nth-child(3){animation-delay:2.4s}.pixel-cat[data-mood=day] .pixel-cat__frame--awake{animation:cat-day-base 7s steps(1,end) infinite}.pixel-cat[data-mood=day] .pixel-cat__frame--blink{animation:cat-day-blink 7s steps(1,end) infinite}.pixel-cat[data-mood=day] .pixel-cat__frame--tail{animation:cat-day-tail 7s steps(1,end) infinite}.pixel-cat[data-mood=day]:hover .pixel-cat__frame--awake{animation:cat-hover-base .9s steps(1,end) infinite}.pixel-cat[data-mood=day]:hover .pixel-cat__frame--blink{animation:cat-hover-blink .9s steps(1,end) infinite}.pixel-cat[data-mood=day]:hover .pixel-cat__frame--tail{animation:none}}@keyframes cat-day-base{0%{opacity:1}40%{opacity:0}43%{opacity:1}75%{opacity:0}80%{opacity:1}}@keyframes cat-day-blink{0%{opacity:0}40%{opacity:1}43%{opacity:0}}@keyframes cat-day-tail{0%{opacity:0}75%{opacity:1}80%{opacity:0}}@keyframes cat-hover-base{0%{opacity:1}10%{opacity:0}25%{opacity:1}40%{opacity:0}55%{opacity:1}}@keyframes cat-hover-blink{0%{opacity:0}10%{opacity:1}25%{opacity:0}40%{opacity:1}55%{opacity:0}}@media(prefers-reduced-motion:reduce){.pixel-cat__zs span:first-child{opacity:1;transform:translate(4px,-4px)}}@keyframes cat-out{0%,to{opacity:1}50%{opacity:0}}@keyframes cat-in{0%,to{opacity:0}50%{opacity:1}}@keyframes cat-z{0%{opacity:0;transform:translate(0) scale(.7)}20%{opacity:1}70%{opacity:.8}to{opacity:0;transform:translate(10px,-14px) scale(1.15)}}.cases{list-style:none;margin:0;padding:0}.case{border-top:var(--rule-w) solid var(--color-rule)}.case:first-child{border-top:0}.cases--soft{display:flex;flex-direction:column;gap:6px}.cases--soft .case{border-top:0}.case__link,.case__item{display:flex;flex-direction:column;gap:4px;padding:16px 0;text-decoration:none;color:inherit;outline:none}.case__link{cursor:pointer}.case:first-child .case__link,.case:first-child .case__item{padding-top:0}.case:last-child .case__link,.case:last-child .case__item{padding-bottom:0}.cases--soft .case__link,.cases--soft .case__item{margin-inline:-12px;padding:12px;border-radius:12px;background:transparent;transition:background var(--dur-fast) var(--ease-out)}.cases--soft .case:first-child .case__link,.cases--soft .case:first-child .case__item,.cases--soft .case:last-child .case__link,.cases--soft .case:last-child .case__item{padding:12px}.case__head{display:flex;align-items:center;justify-content:flex-start;gap:var(--space-xs);min-width:0}.case__title{margin:0;font-family:var(--font-body);font-size:var(--text-md);font-weight:600;letter-spacing:0;line-height:var(--leading-snug);color:var(--color-ink)}.case__link .case__title{width:fit-content;background-image:linear-gradient(currentColor,currentColor);background-size:0 1px;background-position:0 100%;background-repeat:no-repeat;transition:background-size var(--dur) var(--ease-out)}.cases--soft .case__link .case__title{background-image:none}.case__desc{margin:0;font-size:var(--text-sm);line-height:var(--leading-meta);color:var(--color-muted);max-width:34rem}.case__link--with-icon,.case__item--with-icon{flex-direction:row;align-items:center;gap:16px}.case__icon{--case-icon-stroke: color-mix(in srgb, var(--color-rule) 38%, transparent);position:relative;flex:0 0 auto;display:grid;place-items:center;box-sizing:border-box;width:40px;height:40px;margin-top:0;border:0;border-radius:12px;background:transparent;color:color-mix(in srgb,var(--color-ink-soft) 72%,var(--color-muted));transition:color var(--dur) var(--ease-out)}.case__icon:after{content:"";position:absolute;inset:0;border:1px solid var(--case-icon-stroke);border-radius:12px;background:linear-gradient(145deg,color-mix(in srgb,var(--color-ink) 6.5%,var(--color-paper)),color-mix(in srgb,var(--color-ink) 2.5%,var(--color-paper)));pointer-events:none;transition:background var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out)}.case__icon svg,.case__icon-mark{position:relative;z-index:1;display:block;width:20px;height:20px}.case__icon-mark{background-color:currentColor;-webkit-mask:var(--case-mark) center / contain no-repeat;mask:var(--case-mark) center / contain no-repeat}.case__icon-mark--sm{width:17px;height:17px}.case__copy{display:flex;flex-direction:column;gap:4px;min-width:0}.cases--soft .case__link:focus-visible,.cases--soft .case__link:active{background:color-mix(in srgb,var(--color-ink) 4.5%,var(--color-paper))}.case__link--with-icon:focus-visible .case__icon,.case__link--with-icon:active .case__icon{color:var(--color-ink)}@media(hover:hover)and (pointer:fine){.cases--soft .case__link:hover{background:color-mix(in srgb,var(--color-ink) 4.5%,var(--color-paper))}.case__link--with-icon:hover .case__icon{color:var(--color-ink)}}.cases--soft .case__link:hover .case__title,.cases--soft .case__link:focus-visible .case__title{background-size:0}.case__link:hover .case__title,.case__link:focus-visible .case__title{background-size:100% 1px}.case--soon{cursor:inherit}.case--soon .case__icon{color:color-mix(in srgb,var(--color-muted) 88%,var(--color-ink-soft))}.case--soon .case__title{color:var(--color-muted);font-weight:500}.case--soon .case__desc{color:var(--color-muted)}.badge{display:inline-block;padding:2px 8px;border-radius:var(--radius-lg);border:var(--rule-w) solid var(--color-rule);color:var(--color-muted);font-size:var(--text-xs);letter-spacing:.04em;line-height:var(--leading-ui);vertical-align:middle;white-space:nowrap;flex-shrink:0}.foot{margin-top:auto;padding-top:var(--section-gap);font-size:var(--text-meta);line-height:var(--leading-meta);color:var(--color-muted)}.foot>span{display:block}.foot-year{display:inline-flex;margin:0;padding:0;border:0;background:none;font:inherit;color:inherit;font-variant-numeric:tabular-nums;cursor:pointer;border-radius:4px;transition:color var(--dur-fast) var(--ease-out)}.foot-year:hover,.foot-year.is-running{color:var(--color-ink)}.foot-year:focus-visible{outline:2px solid var(--color-ink);outline-offset:2px}.foot-year__slot{position:relative;display:inline-grid;overflow:hidden}.foot-year__digit{grid-area:1 / 1}.foot-year__note{color:var(--color-ink);opacity:0;transition:opacity .24s var(--ease-out)}.foot-year__note.is-visible{opacity:1}.theme-fab{position:fixed;right:var(--space-md);bottom:var(--space-md);z-index:40;width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--color-paper);color:var(--color-muted);border:var(--rule-w) solid var(--color-fab-border);box-shadow:0 2px 10px var(--color-shadow);transition:color var(--dur-fast) var(--ease-out),background var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out)}.theme-fab:hover,.theme-fab:focus-visible{color:var(--color-ink)}body:after{content:"";position:fixed;inset:auto 0 0;z-index:29;height:48px;pointer-events:none;background:linear-gradient(to bottom,color-mix(in srgb,var(--color-paper) 0%,transparent),color-mix(in srgb,var(--color-paper) 8%,transparent) 30%,color-mix(in srgb,var(--color-paper) 25%,transparent) 60%,color-mix(in srgb,var(--color-paper) 55%,transparent));transition:opacity .24s var(--ease-out)}html.at-page-end body:after{opacity:0}@media(max-width:759px){html .theme-fab,html .case-back-fab{transition:translate .28s var(--ease-out),transform var(--dur-fast) var(--ease-out),opacity .2s var(--ease-out),color var(--dur-fast) var(--ease-out),background var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out)}html.fabs-tucked .theme-fab,html.fabs-tucked .case-back-fab{translate:0 calc(100% + var(--space-md) + 8px)!important;opacity:0!important;pointer-events:none}html.fabs-tucked .theme-fab:focus-visible,html.fabs-tucked .case-back-fab:focus-visible{translate:none!important;opacity:1!important}}.theme-fab:active{transform:translateY(1px)}.theme-fab svg{width:20px;height:20px;display:none}[data-theme=dark] .theme-fab .icon-sun,[data-theme=light] .theme-fab .icon-moon{display:block}.case-preview{position:fixed;top:0;left:0;width:var(--preview);z-index:30;pointer-events:none;opacity:0;visibility:hidden;overflow:hidden;border-radius:10px;background:var(--color-paper-2);box-shadow:inset 0 0 0 1px var(--color-rule),0 12px 32px var(--color-shadow);will-change:transform,opacity}.case-preview img,.case-preview video{width:100%;height:auto;aspect-ratio:16 / 9;object-fit:cover;background:var(--color-paper-2)}.case-preview video{display:none}.case-preview.is-video img{display:none}.case-preview.is-video video{display:block}html.motion-pending .wrap,html.motion-pending .theme-fab,html.motion-pending .case-top-fab,html.motion-pending .case-back-fab,html.motion-pending .case-nav{opacity:0}html.is-leaving{pointer-events:none;background-color:var(--color-paper)}html.is-leaving body{background-color:var(--color-paper)}.work-card,.work-card__photo{-webkit-user-drag:none;-webkit-user-select:none;user-select:none}.cases--cards{margin:0;padding:0;list-style:none}.cases--cards .case{border-top:0}.cases--cards .work-card,.cases--cards .case:first-child .work-card,.cases--cards .case:last-child .work-card{display:flex;flex-direction:column;width:100%;height:auto;gap:10px;padding:0}.cases--cards .case__link{display:block;flex-direction:unset;gap:0;padding:0}.cases--cards .case:first-child .case__link,.cases--cards .case:last-child .case__link{padding:0}.cases--cards .work-card__media.case__link{display:block}.cases--cards .work-card__title-link.case__link{display:inline}.work-card{--work-dur: .4s;--work-dur-photo: .52s;--work-ease: cubic-bezier(.16, 1, .3, 1);box-sizing:border-box;margin:0;color:inherit}a.work-card__media{display:block;color:inherit;text-decoration:none;outline:none}.work-card__title-link{display:inline;color:inherit;text-decoration:none;outline:none}.work-card{position:relative}.work-card__title-link:after{content:"";position:absolute;inset:0;z-index:1}.work-card__title-link:focus-visible{outline:none}.work-card__title-link:focus-visible:after{border-radius:14px;outline:2px solid var(--color-focus);outline-offset:4px}.work-card__media{--work-radius: 20px;position:relative;box-sizing:border-box;display:block;width:100%;aspect-ratio:16 / 10;overflow:clip;border:0;border-radius:var(--work-radius);clip-path:inset(0 round var(--work-radius));-webkit-mask-image:-webkit-radial-gradient(#fff 0%,#fff 100%);mask-image:radial-gradient(#fff 0% 100%);background:var(--color-paper-2);isolation:isolate}.work-card__media:after{content:"";position:absolute;inset:0;z-index:3;border-radius:inherit;corner-shape:inherit;box-shadow:inset 0 0 0 1px var(--work-stroke);pointer-events:none;transition:box-shadow var(--work-dur) var(--work-ease)}@supports (corner-shape: squircle){.work-card__media{--work-radius: 32px;corner-shape:squircle;clip-path:none;-webkit-mask-image:none;mask-image:none}}.work-card__photo{position:absolute;inset:-1px;width:calc(100% + 2px);height:calc(100% + 2px);max-width:none;border-radius:0;object-fit:cover;object-position:center center;will-change:transform;backface-visibility:hidden;transition:transform var(--work-dur-photo) var(--work-ease)}.work-card__lock{position:absolute;top:14px;right:14px;z-index:2;display:inline-flex;align-items:center;justify-content:center;gap:5px;height:30px;padding:0 10px 0 8px;border-radius:999px;color:#ffffffeb;background:#0000006b;pointer-events:none;overflow:hidden;transition:padding var(--work-dur) var(--work-ease),gap var(--work-dur) var(--work-ease),background var(--work-dur) var(--work-ease)}.work-card__lock svg{display:block;flex:0 0 auto}.work-card__lock-label{margin:0;font-size:10px;font-weight:600;letter-spacing:.06em;line-height:1;text-transform:uppercase;white-space:nowrap}@media(hover:hover)and (pointer:fine){.work-card:has(:hover) .work-card__lock,.work-card:has(:focus-within) .work-card__lock{background:#0000008c}}.work-card__copy{position:static;padding:0 6px;background:none}.work-card__head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-width:0}.work-card .case__title{margin:0;min-width:0;flex:1 1 auto;overflow:hidden;font-family:var(--font-body);font-size:var(--text-sm);font-style:normal;font-weight:500;letter-spacing:0;line-height:var(--leading-snug);text-overflow:ellipsis;white-space:nowrap;background-image:none;color:var(--color-ink)}.work-card__year{flex:0 0 auto;font-size:var(--text-meta);font-variant-numeric:tabular-nums;line-height:var(--leading-meta);color:var(--color-muted)}.work-card__video{position:absolute;inset:0;z-index:1;width:100%;height:100%;object-fit:cover;opacity:0;pointer-events:none;transition:opacity .32s var(--ease-out)}.work-card__media.is-video-on .work-card__video{opacity:1}.work-card__media.is-video-on .work-card__photo{opacity:0;transition:opacity 0s linear .32s,transform var(--work-dur-photo) var(--work-ease)}.work-card__video{inset:-1px;width:calc(100% + 2px);height:calc(100% + 2px);max-width:none}.cases--grid{--work-stroke: color-mix(in srgb, var(--color-rule) 15%, transparent);--work-stroke-hover: color-mix(in srgb, var(--color-ink) 5%, transparent);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 20px}.cases--grid .case{display:block}.cases--grid .work-card__media{--work-radius: 16px;aspect-ratio:3 / 2}@supports (corner-shape: squircle){.cases--grid .work-card__media{--work-radius: 24px}}.cases--grid .work-card__copy{padding:0 2px}.work-card .work-card__desc{margin:4px 0 0;color:var(--color-muted);font-size:var(--text-meta);line-height:var(--leading-meta);text-wrap:pretty}.work-card__media--placeholder{display:grid;place-items:center;border:1px dashed color-mix(in srgb,var(--color-rule) 90%,transparent);background:color-mix(in srgb,var(--color-ink) 2.5%,var(--color-paper))}.work-card__media--placeholder:after{content:none}.work-card__placeholder-label{color:var(--color-muted);font-size:var(--text-meta);line-height:1}.work-card--placeholder .case__title{color:var(--color-ink-soft)}@media(max-width:640px){.cases--grid{grid-template-columns:1fr;gap:28px}}.work-card__media:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}@media(hover:hover)and (pointer:fine){.work-card:has(:hover) .work-card__media:after,.work-card:has(:focus-within) .work-card__media:after{box-shadow:inset 0 0 0 1px var(--work-stroke-hover)}.work-card:has(:hover) .work-card__photo,.work-card:has(:focus-within) .work-card__photo{transform:scale(1.035)}}@media(max-width:480px){.wrap{padding:var(--space-3xl) var(--space-sm) var(--space-lg)}.subtitle__extra{display:none}.cases--soft .case__link,.cases--soft .case__item{margin-inline:calc(-1 * var(--space-sm));padding:12px var(--space-sm);-webkit-tap-highlight-color:transparent}.cases--soft .case:first-child .case__link,.cases--soft .case:first-child .case__item,.cases--soft .case:last-child .case__link,.cases--soft .case:last-child .case__item{padding:12px var(--space-sm)}.case__link--with-icon,.case__item--with-icon{gap:14px}.case__head{flex-wrap:wrap;row-gap:4px}.work-card__lock{top:12px;right:12px;height:28px;padding:0 9px 0 7px}}@media(max-width:860px){.intro{margin-bottom:var(--space-xl)}.case-preview{display:none}}@media(pointer:fine){:root{--cursor-arrow: url(/cursors/pointer-dark.png) 6 5, auto}html,body{cursor:var(--cursor-arrow)}button:not(:disabled),a,label[for],summary,[role=button],.theme-fab,.case-top-fab,.case-back-fab,.case-back,.case-nav a,.case-next__link,.case__link,a.work-card__media,.work-card__title-link{cursor:pointer}input:not([type=submit]):not([type=button]):not([type=reset]):not([type=checkbox]):not([type=radio]),textarea,[contenteditable=true]{cursor:text}}@media(prefers-reduced-motion:reduce){html.motion-pending .wrap,html.motion-pending .theme-fab,html.motion-pending .case-top-fab,html.motion-pending .case-back-fab,html.motion-pending .case-nav{opacity:1}html:not(.motion-pending) body,a,.list a,.theme-fab,.case-preview,.case__title,.case__icon,.case__icon:after,.work-card__media,.work-card__media:after,.work-card__photo,.work-card__lock,.work-card__lock-label{transition:none}.work-card:has(:hover) .work-card__photo{transform:none}}.case__preview{--mini-ink: 255, 255, 255;--mini-accent: #e8b46a;--mini-green: #5fd39a;--mini-part: #242427;--mini-part-shadow: rgba(0, 0, 0, .35);--mini-hole: #18181a;--mini-head: #ffffff;--mini-pack: rgba(0, 0, 0, .32);--tile-base-top: #1b1b1d;--tile-base-bottom: #131314;--tile-mix-top: 0%;--tile-mix-bottom: 0%;--tile-tint: #ffffff;position:relative;flex:0 0 auto;display:block;width:92px;aspect-ratio:1;overflow:hidden;border-radius:16px;background:radial-gradient(110% 80% at 50% 0%,color-mix(in srgb,var(--tile-tint) 4%,transparent),transparent 72%),linear-gradient(180deg,color-mix(in srgb,var(--tile-tint) var(--tile-mix-top),var(--tile-base-top)),color-mix(in srgb,var(--tile-tint) var(--tile-mix-bottom),var(--tile-base-bottom)));box-shadow:inset 0 0 0 1px #ffffff06,inset 0 1px #ffffff0a,0 1px 2px #0000004d,0 8px 20px #0003;transition:box-shadow var(--dur) var(--ease-out),transform var(--dur) var(--ease-out)}html[data-theme=light] .case__preview{--mini-ink: 22, 22, 26;--mini-accent: #b9822f;--mini-green: #23925f;--mini-part: #ffffff;--mini-part-shadow: rgba(0, 0, 0, .08);--mini-hole: #f3f3f4;--mini-head: #16161a;--mini-pack: rgba(255, 255, 255, .7);--tile-base-top: #fbfbfb;--tile-base-bottom: #f1f1f2;--tile-mix-top: 0%;--tile-mix-bottom: 0%;box-shadow:0 0 0 1px #0000000b,inset 0 1px #fffc,0 1px 2px #0000000a}html[data-theme=light] .case__link--with-preview:is(:hover,:focus-visible) .case__preview{box-shadow:0 0 0 1px #00000012,inset 0 1px #fffc,0 2px 6px #0000000f}.case__link--with-preview:hover .case__preview,.case__link--with-preview:focus-visible .case__preview{transform:translateY(-1px);box-shadow:inset 0 0 0 1px #ffffff0d,inset 0 1px #ffffff0f,0 2px 4px #0000004d,0 12px 28px #00000042}.mini{display:block;width:100%;height:100%}.case__link--with-preview:is(:hover,:focus-visible) .mini *{animation-duration:6s;animation-iteration-count:infinite;animation-timing-function:linear}.mini--tape .m-strand{stroke:rgba(var(--mini-ink),.22);stroke-width:.6}.mini--tape .m-pack{fill:var(--mini-pack);stroke:rgba(var(--mini-ink),.07);stroke-width:.6}.mini--tape .m-hub-disc{fill:rgba(var(--mini-ink),.82)}.mini--tape .m-hub-bore,.mini--tape .m-tooth{fill:var(--mini-hole)}.mini--tape .m-bars{fill:rgba(var(--mini-ink),.32)}.mini--tape .m-bars--played{fill:var(--mini-accent);clip-path:inset(0 52% 0 0)}.mini--tape .m-head{stroke:var(--mini-head);stroke-width:1;stroke-linecap:round;transform:translate(12.5px)}.case__link--with-preview:is(:hover,:focus-visible) .mini--tape .m-hub{animation-name:mini-spin;animation-duration:1.4s}.case__link--with-preview:is(:hover,:focus-visible) .mini--tape .m-bars--played{animation-name:mini-played}.case__link--with-preview:is(:hover,:focus-visible) .mini--tape .m-head{animation-name:mini-head}@keyframes mini-spin{to{transform:rotate(360deg)}}@keyframes mini-played{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}@keyframes mini-head{0%{transform:translate(0)}to{transform:translate(26px)}}.mini--confidence .m-line{fill:rgba(var(--mini-ink),.34)}.mini--confidence .m-claim{fill:var(--mini-accent);opacity:.9}.mini--confidence .m-mark{fill:none;stroke-width:1.3;stroke-dasharray:1.5 1.9;stroke-linecap:round}.mini--confidence .m-mark--caution{stroke:var(--mini-accent)}.mini--confidence .m-mark--quiet{stroke:rgba(var(--mini-ink),.6)}.mini--confidence .m-caution-bg{fill:var(--mini-accent);opacity:.16}.mini--confidence .m-tip{opacity:0}.mini--confidence .m-tip-body{fill:var(--mini-part);stroke:rgba(var(--mini-ink),.08);stroke-width:.5;stroke-linejoin:round}.mini--confidence .m-tip-dot{fill:var(--mini-accent)}.mini--confidence .m-tip-text{fill:rgba(var(--mini-ink),.7)}.case__link--with-preview:is(:hover,:focus-visible) .mini--confidence .m-text{animation-name:mini-stream}.case__link--with-preview:is(:hover,:focus-visible) .mini--confidence .m-mark{animation-name:mini-mark}.case__link--with-preview:is(:hover,:focus-visible) .mini--confidence .m-caution-bg{animation-name:mini-caution}.case__link--with-preview:is(:hover,:focus-visible) .mini--confidence .m-tip{animation-name:mini-tip;animation-timing-function:var(--ease-out)}@keyframes mini-stream{0%{clip-path:inset(0 0 72% 0)}32%,to{clip-path:inset(0 0 0 0)}}@keyframes mini-mark{0%,36%{opacity:0}46%,to{opacity:1}}@keyframes mini-caution{0%,36%{opacity:0}46%,to{opacity:.16}}@keyframes mini-tip{0%,52%{opacity:0;transform:translateY(3px)}60%,92%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(0)}}.mini--mission .m-bar,.mini--mission .m-chip-face{fill:var(--mini-part);stroke:rgba(var(--mini-ink),.08);stroke-width:.5}.mini--mission .m-chip-face{fill:color-mix(in srgb,var(--mini-part) 88%,#ffffff);stroke:rgba(var(--mini-ink),.12)}.mini--mission .m-bar-shadow{fill:var(--mini-part-shadow)}.mini--mission .m-key,.mini--mission .m-chip-glyph{fill:rgba(var(--mini-ink),.72)}.mini--mission .m-plus{stroke:rgba(var(--mini-ink),.72);stroke-width:1.1;stroke-linecap:round}.mini--mission .m-ring{fill:none;stroke:rgba(var(--mini-ink),.28);stroke-width:.7;opacity:0;transform-box:fill-box;transform-origin:center}.mini--mission .m-status{fill:var(--mini-green);stroke:var(--mini-part);stroke-width:.9}.mini--mission .m-chip{transform-box:fill-box;transform-origin:center}.case__link--with-preview:is(:hover,:focus-visible) .mini--mission .m-chip{animation-name:mini-chip;animation-timing-function:var(--ease-out)}.case__link--with-preview:is(:hover,:focus-visible) .mini--mission .m-ring{animation-name:mini-ring}.case__link--with-preview:is(:hover,:focus-visible) .mini--mission .m-status{animation-name:mini-status}@keyframes mini-chip{0%,4%{opacity:0;transform:scale(.4)}12%,to{opacity:1;transform:scale(1)}}@keyframes mini-ring{0%,12%{opacity:0;transform:scale(.9)}22%{opacity:1;transform:scale(1.12)}32%{opacity:.3;transform:scale(1)}42%{opacity:1;transform:scale(1.12)}52%,to{opacity:0;transform:scale(1)}}@keyframes mini-status{0%,48%{fill:rgba(var(--mini-ink),.5)}52%,to{fill:var(--mini-green)}}@media(prefers-reduced-motion:reduce){.case__link--with-preview .mini *{animation:none!important}.case__link--with-preview:hover .case__preview,.case__link--with-preview:focus-visible .case__preview{transform:none}}@media(max-width:767px){.case__preview{width:76px;border-radius:14px}}@supports (corner-shape: squircle){.case__preview{corner-shape:squircle;border-radius:24px}@media(max-width:767px){.case__preview{border-radius:21px}}}.foot{display:flex;align-items:center;justify-content:flex-start;gap:4px}.foot-agent{position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;margin:-8px 0;border-radius:8px;color:var(--color-muted);transition:color var(--dur-fast) var(--ease-out)}.foot-agent:hover,.foot-agent:focus-visible{color:var(--color-ink)}.foot-agent:focus-visible{outline:2px solid var(--color-ink);outline-offset:2px}.foot-agent svg{transform:translateY(-2px)}.foot-agent__tip{position:absolute;left:50%;bottom:calc(100% + 6px);padding:4px 8px;border-radius:6px;background:var(--color-ink);color:var(--color-paper);font-size:12px;line-height:1.4;white-space:nowrap;pointer-events:none;opacity:0;transform:translate(-50%,2px);transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.foot-agent:hover .foot-agent__tip,.foot-agent:focus-visible .foot-agent__tip{opacity:1;transform:translate(-50%)}@media(max-width:760px){.foot{margin-bottom:52px}}
