:root{--duration-stagger: 40ms;--duration-micro: 80ms;--duration-quick: .15s;--duration-fast: .25s;--duration-medium: .35s;--duration-slow: .4s;--duration-very-slow: .5s;--ease-smooth-out: cubic-bezier( .22, 1, .36, 1 );--ease-in-out: ease-in-out;--ease-out: ease-out;--ease-linear: linear;--ease-bounce: cubic-bezier(.34, 1.36, .64, 1);--ease-bounce-strong: cubic-bezier( .34, 3.85, .64, 1 );--distance-micro: 4px;--distance-small: 6px;--distance-base: 8px;--distance-medium: 12px;--distance-large: 30px;--scale-large: .96;--scale-medium: .97;--scale-small: .98;--scale-tiny: .99;--blur-small: 2px;--blur-medium: 3px;--blur-large: 8px}:root{--color-background: #ffffff;--color-text: #111111;--color-text-muted: #6b6b6b;--color-rule: #ececec;--font-family: "Instrument Sans", system-ui, sans-serif;--font-size: 16px;--font-size-caption: 14px;--font-size-small: 13px;--line-height: 1.6;--column-width: 560px;--media-width: 960px;--radius-media: 6px;--shadow-preview: 0 2px 6px rgb(0 0 0 / .06), 0 16px 40px rgb(0 0 0 / .1);--dir: 1;--intro-pace: 1;color-scheme:light}:root[data-theme=dark]{--color-background: #0f0f0f;--color-text: #ededed;--color-text-muted: #9a9a9a;--color-rule: #262626;--shadow-preview: 0 2px 6px rgb(0 0 0 / .4), 0 16px 40px rgb(0 0 0 / .5);color-scheme:dark}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--color-background: #0f0f0f;--color-text: #ededed;--color-text-muted: #9a9a9a;--color-rule: #262626;--shadow-preview: 0 2px 6px rgb(0 0 0 / .4), 0 16px 40px rgb(0 0 0 / .5);color-scheme:dark}}[dir=rtl]{--dir: -1}[dir=rtl] .icon--directional{scale:-1 1}*,*:before,*:after{box-sizing:border-box}body,h1,h2,p,ul,dl,dd,figure{margin:0;padding:0}body{background:var(--color-background);color:var(--color-text);font-family:var(--font-family);font-size:var(--font-size);line-height:var(--line-height);-webkit-font-smoothing:antialiased}::selection{background:var(--color-text);color:var(--color-background)}h1,h2{font:inherit}ul{list-style:none}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;text-align:inherit}img{display:block}:focus-visible{outline:2px solid var(--color-text);outline-offset:4px;border-radius:2px}.muted{color:var(--color-text-muted)}.tabular{font-variant-numeric:tabular-nums}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.icon{flex-shrink:0}.page{display:flex;flex-direction:column;align-items:center;gap:72px;padding:120px 24px}.column{width:100%;max-width:var(--column-width)}.intro__bio{margin-top:24px}.section{display:flex;flex-direction:column;gap:16px}.local-time__colon{animation:breathe 2s var(--ease-in-out) infinite}@keyframes breathe{50%{opacity:.25}}.local-time__minutes{display:inline-block;animation:tick var(--duration-fast) var(--ease-smooth-out)}@keyframes tick{0%{opacity:0;translate:0 var(--distance-micro);filter:blur(var(--blur-small))}}.local-time{cursor:default}.local-time__extra{display:inline-grid;grid-template-columns:0fr;vertical-align:bottom;opacity:0;transition:grid-template-columns var(--duration-quick) var(--ease-smooth-out),opacity var(--duration-quick) var(--ease-smooth-out)}.local-time__extra>span{overflow:hidden;white-space:nowrap}.local-time[data-seconds=true] .local-time__extra{grid-template-columns:1fr;opacity:1;transition:grid-template-columns var(--duration-fast) var(--ease-smooth-out),opacity var(--duration-fast) var(--ease-smooth-out)}.local-time__tick{display:inline-block;animation:tick var(--duration-quick) var(--ease-smooth-out)}.intro__bio .split__word{transition:opacity var(--duration-fast) var(--ease-smooth-out)}.intro__bio:has(.highlight:hover) .split__word{opacity:.25}.intro__bio .highlight:hover .split__word{opacity:1}.highlight{background:linear-gradient(currentColor,currentColor) 100% 100% / 0% 1px no-repeat;box-decoration-break:clone;-webkit-box-decoration-break:clone;transition:background-size var(--duration-quick) var(--ease-smooth-out)}.highlight:hover{background-position:0 100%;background-size:100% 1px;transition:background-size var(--duration-fast) var(--ease-smooth-out)}.confetti{position:fixed;inset:0;z-index:50;pointer-events:none}.confetti span{position:absolute;will-change:transform,opacity}.balloons{position:fixed;inset:0;z-index:45;overflow:hidden;pointer-events:none}.balloon{position:absolute;top:100%;width:var(--size);height:calc(var(--size) * 1.2);padding:0;border:0;border-radius:50% 50% 48% 52%/45% 45% 55% 55%;background:radial-gradient(circle at 32% 28%,rgb(255 255 255 / .55),transparent 32%),var(--color);cursor:pointer;pointer-events:auto;transform-origin:50% 120%;animation:balloon-sway var(--sway) var(--ease-in-out) infinite alternate}.balloon:before{content:"";position:absolute;bottom:-5px;left:50%;translate:-50% 0;border:5px solid transparent;border-bottom:6px solid var(--color);border-top:0;rotate:180deg}.balloon:after{content:"";position:absolute;top:100%;left:50%;width:1px;height:calc(var(--size) * .9);margin-top:5px;background:var(--color-text-muted);opacity:.6}@keyframes balloon-sway{0%{rotate:-6deg}to{rotate:6deg}}.swap{grid-area:1 / 1;transition:opacity var(--duration-quick) var(--ease-in-out),translate var(--duration-quick) var(--ease-in-out),filter var(--duration-quick) var(--ease-in-out)}.swap--in{opacity:0;translate:0 var(--distance-micro);filter:blur(var(--blur-small))}.row{position:relative;display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:10px 0}.row:before,.row:after{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--color-rule);transform-origin:left}.row__title{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:12px;transition:translate var(--duration-medium) var(--ease-bounce-strong)}.row__meta{font-variant-numeric:tabular-nums;white-space:nowrap}.row__end{display:grid;justify-items:end}.row__action{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.rows .row{transition:opacity var(--duration-fast) var(--ease-smooth-out)}.rows:hover .row:not(:hover){opacity:.3}.row:after{background:var(--color-text);scale:0 1;transform-origin:right;transition:scale var(--duration-quick) var(--ease-smooth-out)}.row:hover:after,.row--link:focus-visible:after{scale:1 1;transform-origin:left;transition:scale var(--duration-fast) var(--ease-smooth-out)}.row:hover .row__title,.row--link:focus-visible .row__title{translate:calc(var(--distance-micro) * var(--dir)) 0;transition:translate var(--duration-fast) var(--ease-smooth-out)}.row--link:hover .swap--out,.row--link:focus-visible .swap--out{opacity:0;translate:0 calc(var(--distance-micro) * -1);filter:blur(var(--blur-small))}.row--link:hover .swap--in,.row--link:focus-visible .swap--in{opacity:1;translate:0 0;filter:blur(0)}.app-tile{display:grid;place-items:center;flex-shrink:0;border-radius:22.5%;background:linear-gradient(180deg,#fff,#f1f1f3);box-shadow:inset 0 0 0 .5px #0000001a,inset 0 -1px #0000000a,0 1px 1.5px #00000029,0 4px 8px -2px #00000029}@supports (corner-shape: squircle){.app-tile{border-radius:32%;corner-shape:squircle}}.app-tile img{width:58%;height:58%}.tabs{display:flex;flex-direction:column;gap:16px}.tabs__list{position:relative;display:flex;flex-wrap:wrap;gap:4px;width:fit-content;margin-inline-start:-12px}.tabs__pill{position:absolute;top:0;left:0;border-radius:999px;background:var(--color-rule);pointer-events:none}.tabs__pill[data-ready=true]{transition:translate var(--duration-fast) var(--ease-smooth-out),width var(--duration-fast) var(--ease-smooth-out),height var(--duration-fast) var(--ease-smooth-out)}.tabs__tab{position:relative;display:inline-flex;align-items:baseline;gap:2px;padding:4px 12px;border-radius:999px;color:var(--color-text-muted);transition:color var(--duration-quick) var(--ease-smooth-out),background-color var(--duration-quick) var(--ease-smooth-out),scale var(--duration-quick) var(--ease-smooth-out)}.tabs__tab:hover{color:var(--color-text)}.tabs__tab[aria-selected=false]:hover{background:color-mix(in oklab,var(--color-rule) 55%,transparent)}.tabs__tab[aria-selected=true]{color:var(--color-text)}.tabs__tab:active{scale:var(--scale-small)}.tabs__tab:focus-visible{outline-offset:0;border-radius:999px}.tabs__panels{display:grid}.tabs__panel{grid-area:1 / 1;min-width:0}.tabs__panel[data-active=false]:not([data-leaving]){visibility:hidden}:root .tabs__panel[data-leaving]{pointer-events:none;animation:tab-out var(--duration-quick) var(--ease-smooth-out) forwards}:root .tabs__panel[data-replay] .row{animation:text-reveal var(--duration-very-slow) var(--ease-smooth-out) calc(var(--row, 0) * 60ms + 80ms) backwards}:root .tabs__panel[data-replay] .row--intro:before,:root .tabs__panel[data-replay] .row--intro>*{animation:none}@keyframes tab-out{to{opacity:0;translate:0 calc(var(--distance-micro) * -1)}}.section--end .site-footer{margin-top:40px}.row__title:has(.row__icon){align-items:center}.row__icon{width:28px;height:28px;margin-block:-4px}.cursor-preview{position:fixed;top:0;left:0;z-index:10;width:280px;aspect-ratio:8 / 5;overflow:hidden;border-radius:var(--radius-media);background:var(--color-rule);box-shadow:var(--shadow-preview);pointer-events:none;opacity:0;scale:var(--scale-large);transform-origin:left center;transition:opacity var(--duration-quick) var(--ease-smooth-out),scale var(--duration-quick) var(--ease-smooth-out),rotate var(--duration-fast) var(--ease-smooth-out);will-change:translate,rotate}.cursor-preview[data-side=left]{transform-origin:right center}.cursor-preview[data-visible=true]{opacity:1;scale:1;transition:opacity var(--duration-fast) var(--ease-smooth-out),scale var(--duration-fast) var(--ease-smooth-out),rotate var(--duration-fast) var(--ease-smooth-out)}.cursor-preview img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;clip-path:inset(100% 0 0 0);scale:1.08;transition:clip-path 0s linear var(--duration-fast),scale 0s linear var(--duration-fast)}.cursor-preview img[data-active=true]{z-index:2;clip-path:inset(0);scale:1;transition:clip-path var(--duration-fast) var(--ease-smooth-out),scale var(--duration-slow) var(--ease-smooth-out)}@media(hover:none){.cursor-preview{display:none}}.link{background:linear-gradient(currentColor,currentColor) 100% 100% / 0% 1px no-repeat,linear-gradient(var(--color-rule),var(--color-rule)) 0 100% / 100% 1px no-repeat;padding-bottom:2px;transition:background-size var(--duration-quick) var(--ease-smooth-out)}.link:hover,.link:focus-visible,.next-project__link:hover .link,.next-project__link:focus-visible .link{background-position:0 100%,0 100%;background-size:100% 1px,100% 1px;transition:background-size var(--duration-fast) var(--ease-smooth-out)}.link:active,.row--link:active .row__title,.project-nav__back:active,.next-project__link:active{opacity:.6}.link--icon{display:inline-flex;align-items:center;gap:6px;width:fit-content}.link--icon .icon,.row__action .icon{transition:translate var(--duration-medium) var(--ease-bounce-strong)}.link--icon:hover .icon,.link--icon:focus-visible .icon,.next-project__link:hover .icon,.row--link:hover .row__action .icon{transition:translate var(--duration-fast) var(--ease-smooth-out)}.link--icon:hover .icon,.link--icon:focus-visible .icon,.next-project__link:hover .icon{translate:calc(3px * var(--dir)) 0}.row--link:hover .row__action .icon{translate:calc(3px * var(--dir)) 0}.link--icon[href^=http]:hover .icon,.row--link[target]:hover .row__action .icon{translate:calc(2px * var(--dir)) -2px}.project-nav__back:hover .icon,.project-nav__back:focus-visible .icon{translate:calc(-3px * var(--dir)) 0}.link--icon[download]:hover .icon,.link--icon[download]:focus-visible .icon{translate:0 2px}.link--up:hover .icon,.link--up:focus-visible .icon{translate:0 -3px}.contact{display:flex;flex-wrap:wrap;gap:8px 24px}.copy-email{position:relative}.copy-email__stack{display:inline-grid}.copy-email__done{display:inline-flex;align-items:center;gap:6px}.copy-email[data-copied=true] .swap--out{opacity:0;translate:0 calc(var(--distance-micro) * -1);filter:blur(var(--blur-small))}.copy-email[data-copied=true] .swap--in{opacity:1;translate:0 0;filter:blur(0)}.icon--check path{stroke-dasharray:1;stroke-dashoffset:1}.copy-email[data-copied=true] .icon--check path{stroke-dashoffset:0;transition:stroke-dashoffset var(--duration-very-slow) var(--ease-smooth-out) var(--duration-micro)}.tooltip{position:absolute;bottom:calc(100% + 8px);left:50%;padding:4px 8px;border-radius:4px;background:var(--color-text);color:var(--color-background);font-size:var(--font-size-small);line-height:1.4;white-space:nowrap;pointer-events:none;opacity:0;translate:-50% var(--distance-micro);scale:var(--scale-small);transition:opacity var(--duration-quick) var(--ease-out),translate var(--duration-quick) var(--ease-out),scale var(--duration-quick) var(--ease-out)}.copy-email:hover .tooltip,.copy-email:focus-visible .tooltip{opacity:1;translate:-50% 0;scale:1;transition-delay:var(--duration-micro)}.copy-email[data-copied=true] .tooltip{opacity:0;transition-delay:0s}.site-footer{display:flex;align-items:baseline;justify-content:space-between;font-size:var(--font-size-caption)}.site-footer .link--up{color:var(--color-text-muted);transition:color var(--duration-quick) var(--ease-smooth-out),background-size var(--duration-quick) var(--ease-smooth-out)}.site-footer .link--up:hover{color:var(--color-text)}.rain{position:fixed;inset:0;z-index:40;overflow:hidden;pointer-events:none}.rain img{position:absolute;top:0;left:var(--x);width:var(--size);aspect-ratio:8 / 5;object-fit:cover;border-radius:4px;box-shadow:var(--shadow-preview);translate:-50% -120%;animation:rain-fall var(--fall) cubic-bezier(.55,0,.9,.6) var(--wait) both}@keyframes rain-fall{to{translate:calc(-50% + var(--drift)) 110vh;rotate:var(--spin)}}.site-footer{flex-wrap:wrap;align-items:center;gap:12px 24px}.site-footer__controls>*{display:inline-flex;align-items:center;height:24px;line-height:24px}.site-footer__controls .link{padding-bottom:0;background-size:0% 1px,0% 1px}.site-footer__controls .link:hover,.site-footer__controls .link:focus-visible{background-size:100% 1px,0% 1px}.site-footer__controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px 24px}.locale-menu{position:relative}.locale-menu__trigger{display:inline-flex;align-items:center;gap:4px;transition:color var(--duration-quick) var(--ease-smooth-out)}.locale-menu__trigger .icon{transition:translate var(--duration-medium) var(--ease-bounce-strong),rotate var(--duration-fast) var(--ease-smooth-out)}.locale-menu__trigger:hover,.locale-menu[data-open=true] .locale-menu__trigger{color:var(--color-text)}.locale-menu__trigger:hover .icon{translate:0 2px;transition:translate var(--duration-fast) var(--ease-smooth-out),rotate var(--duration-fast) var(--ease-smooth-out)}.locale-menu[data-open=true] .locale-menu__trigger .icon{rotate:180deg;translate:none}.locale-menu__list{position:absolute;bottom:calc(100% + 12px);inset-inline-start:-10px;z-index:30;min-width:200px;max-height:min(420px,70vh);overflow-y:auto;padding:4px;list-style:none;border:1px solid var(--color-rule);border-radius:8px;background:var(--color-background);box-shadow:var(--shadow-preview);color:var(--color-text-muted);transform-origin:bottom left;opacity:0;scale:var(--scale-medium);translate:0 var(--distance-micro);visibility:hidden;pointer-events:none;transition:opacity var(--duration-quick) var(--ease-smooth-out),scale var(--duration-quick) var(--ease-smooth-out),translate var(--duration-quick) var(--ease-smooth-out),visibility 0s linear var(--duration-quick)}[dir=rtl] .locale-menu__list{transform-origin:bottom right}.locale-menu[data-open=true] .locale-menu__list{opacity:1;scale:1;translate:0 0;visibility:visible;pointer-events:auto;transition:opacity var(--duration-fast) var(--ease-smooth-out),scale var(--duration-fast) var(--ease-smooth-out),translate var(--duration-fast) var(--ease-smooth-out),visibility 0s}.locale-menu__list:focus-visible{outline:none}.locale-menu__option{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:6px 10px;border-radius:4px;font-size:var(--font-size-caption);line-height:1.5;cursor:pointer;transition:background-color var(--duration-quick) var(--ease-smooth-out),color var(--duration-quick) var(--ease-smooth-out)}.locale-menu__option[data-active=true]{background:var(--color-rule);color:var(--color-text)}.locale-menu__option[aria-selected=true]{color:var(--color-text)}.locale-menu__option .icon--check path{stroke-dashoffset:0}.theme-toggle{color:var(--color-text-muted);transition:color var(--duration-quick) var(--ease-smooth-out),background-size var(--duration-quick) var(--ease-smooth-out)}.theme-toggle:hover{color:var(--color-text)}.sun-moon{overflow:visible;transition:rotate var(--duration-very-slow) var(--ease-bounce)}.sun-moon__disc,.sun-moon__shadow,.sun-moon__rays{transform-box:view-box;transform-origin:center}.sun-moon__disc{transition:scale var(--duration-very-slow) var(--ease-bounce)}.sun-moon__shadow{translate:12px -12px;transition:translate var(--duration-slow) var(--ease-smooth-out)}.sun-moon__rays{transition:opacity var(--duration-fast) var(--ease-smooth-out),scale var(--duration-slow) var(--ease-bounce),rotate var(--duration-very-slow) var(--ease-smooth-out)}.sun-moon[data-mode=moon] .sun-moon__disc{scale:1.6}.sun-moon[data-mode=moon] .sun-moon__shadow{translate:5px -4px;transition:translate var(--duration-slow) var(--ease-smooth-out) var(--duration-micro)}.sun-moon[data-mode=moon] .sun-moon__rays{opacity:0;scale:.4;rotate:-90deg}.theme-toggle:hover .sun-moon[data-mode=sun] .sun-moon__rays{rotate:45deg}.theme-toggle:hover .sun-moon[data-mode=moon]{rotate:-20deg}.theme-toggle.link--icon:hover .icon{translate:none}.theme-toggle__label{display:inline-block;animation:tick var(--duration-fast) var(--ease-smooth-out)}.kbd{margin-inline-start:6px;padding:0 6px;border:1px solid var(--color-rule);border-radius:4px;font-family:inherit;font-size:var(--font-size-small);line-height:1.5;color:var(--color-text-muted);opacity:0;translate:calc(var(--distance-micro) * -1 * var(--dir)) 0;transition:opacity var(--duration-quick) var(--ease-smooth-out),translate var(--duration-quick) var(--ease-smooth-out)}.project-nav__back:hover .kbd,.project-nav__back:focus-visible .kbd{opacity:1;translate:0 0;transition:opacity var(--duration-fast) var(--ease-smooth-out),translate var(--duration-fast) var(--ease-smooth-out)}@media(hover:none){.kbd{display:none}}:root[data-transition=theme] *,:root[data-transition=language] *{view-transition-name:none!important}:root[data-transition=theme]::view-transition-old(root){animation:none}:root[data-transition=theme]::view-transition-new(root){animation:theme-reveal var(--duration-very-slow) var(--ease-smooth-out)}@keyframes theme-reveal{0%{clip-path:circle(0 at var(--reveal-x) var(--reveal-y))}to{clip-path:circle(var(--reveal-radius) at var(--reveal-x) var(--reveal-y))}}:root[data-transition=language]::view-transition-old(root){animation:language-out var(--duration-quick) var(--ease-smooth-out) both}:root[data-transition=language]::view-transition-new(root){animation:none}@keyframes language-out{to{opacity:0;translate:0 calc(var(--distance-micro) * -1);filter:blur(var(--blur-medium))}}.page:has(.project-header){gap:96px}.read-progress{position:fixed;top:0;left:0;right:0;z-index:20;height:2px;background:var(--color-text);scale:0 1;transform-origin:left}@supports (animation-timeline: scroll()){.read-progress{animation:read-progress linear both;animation-timeline:scroll(root)}}@keyframes read-progress{to{scale:1 1}}.project-header{display:flex;flex-direction:column;gap:48px}.project-nav{display:flex;align-items:center;justify-content:space-between}.project-nav__back{transition:color var(--duration-quick) var(--ease-smooth-out)}.project-nav__back:hover,.project-nav__back:focus-visible{color:var(--color-text)}.project-title{display:inline-block;view-transition-name:project-title}.project-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}.media{overflow:hidden;border-radius:var(--radius-media);background:var(--color-rule)}.media img{width:100%;height:100%;object-fit:cover}.media--hero{width:100%;max-width:var(--media-width);aspect-ratio:8 / 5;view-transition-name:project-cover}.media--zoom img{transition:scale var(--duration-very-slow) var(--ease-smooth-out)}.media--zoom:hover img{scale:1.03}.story{display:flex;flex-direction:column;gap:48px}.story>section,section.story{display:flex;flex-direction:column;gap:8px}.media-pair{width:100%;max-width:var(--media-width);display:flex;flex-direction:column;gap:12px}.media-pair__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.media--pair{aspect-ratio:6 / 5}.caption{font-size:var(--font-size-caption)}.next-project{display:flex;align-items:baseline;justify-content:space-between;padding-top:24px;border-top:1px solid var(--color-rule)}.next-project__link{position:relative}.next-project__thumb{position:absolute;top:50%;inset-inline-end:calc(100% + 16px);width:96px;aspect-ratio:8 / 5;overflow:hidden;border-radius:4px;pointer-events:none;opacity:0;translate:calc(var(--distance-base) * var(--dir)) -50%;rotate:-4deg;scale:var(--scale-large);transition:opacity var(--duration-quick) var(--ease-smooth-out),translate var(--duration-quick) var(--ease-smooth-out),rotate var(--duration-quick) var(--ease-smooth-out),scale var(--duration-quick) var(--ease-smooth-out)}.next-project__thumb img{width:100%;height:100%;object-fit:cover}.next-project__link:hover .next-project__thumb,.next-project__link:focus-visible .next-project__thumb{opacity:1;translate:0 -50%;rotate:0deg;scale:1;transition:opacity var(--duration-fast) var(--ease-smooth-out),translate var(--duration-fast) var(--ease-smooth-out),rotate var(--duration-slow) var(--ease-bounce),scale var(--duration-fast) var(--ease-smooth-out)}@media(max-width:640px){.page{padding:72px 20px;gap:56px}.page:has(.project-header){gap:64px}.project-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.media-pair__grid{grid-template-columns:1fr}.next-project__thumb{display:none}}@keyframes text-reveal{0%{opacity:0;translate:0 var(--distance-medium);filter:blur(var(--blur-medium))}}@keyframes char-rise{0%{translate:0 110%}}@keyframes word-reveal{0%{opacity:0;filter:blur(var(--blur-medium))}}@keyframes line-draw{0%{scale:0 1}}@keyframes row-reveal{0%{opacity:0;translate:0 var(--distance-micro)}}@keyframes wipe{0%{clip-path:inset(100% 0 0 0 round var(--radius-media))}to{clip-path:inset(0 round var(--radius-media))}}@keyframes settle{0%{scale:1.08}}.in{animation:text-reveal var(--duration-very-slow) var(--ease-in-out) calc(var(--delay, 0ms) * var(--intro-pace)) backwards}.split__mask{display:inline-block;overflow:clip;padding-bottom:.12em;margin-bottom:-.12em;vertical-align:top}.split__char,.split__wave{display:inline-block}.split__char.in{animation:char-rise var(--duration-very-slow) var(--ease-smooth-out) calc(var(--delay, 0ms) * var(--intro-pace)) backwards}.intro__name{width:fit-content}.intro__name:hover .split__wave{animation:wave var(--duration-very-slow) var(--ease-in-out) calc(var(--index) * 20ms)}@keyframes wave{40%{translate:0 -3px}}.split__word{display:inline-block}.split__word.in{animation:word-reveal var(--duration-very-slow) var(--ease-in-out) calc(var(--delay, 0ms) * var(--intro-pace)) backwards}.row--intro:before{animation:line-draw var(--duration-very-slow) var(--ease-smooth-out) calc(var(--delay, 0ms) * var(--intro-pace)) backwards}.row--intro>*{animation:row-reveal var(--duration-slow) var(--ease-smooth-out) calc(var(--delay, 0ms) * var(--intro-pace) + var(--duration-micro)) backwards}.media--wipe.in{animation:wipe var(--duration-very-slow) var(--ease-smooth-out) calc(var(--delay, 0ms) * var(--intro-pace)) backwards}.media--wipe.in img{animation:settle .9s var(--ease-smooth-out) calc(var(--delay, 0ms) * var(--intro-pace)) backwards}:root[data-intro=language]{--intro-pace: .4}:root[data-navigated] .in,:root[data-navigated] .in img,:root[data-navigated] .row--intro:before,:root[data-navigated] .row--intro>*{animation:none}.reveal{opacity:0;translate:0 var(--distance-medium);filter:blur(var(--blur-medium));transition:opacity var(--duration-very-slow) var(--ease-in-out),translate var(--duration-very-slow) var(--ease-in-out),filter var(--duration-very-slow) var(--ease-in-out)}.reveal[data-revealed=true]{opacity:1;translate:0 0;filter:blur(0)}.reveal--wipe,.reveal--wipe[data-revealed=true]{opacity:1;translate:none;filter:none}.reveal--wipe .media{clip-path:inset(100% 0 0 0 round var(--radius-media));transition:clip-path var(--duration-very-slow) var(--ease-smooth-out)}.reveal--wipe .media:nth-child(2){transition-delay:var(--duration-micro)}.reveal--wipe[data-revealed=true] .media{clip-path:inset(0 round var(--radius-media))}.reveal--wipe .caption{opacity:0;transition:opacity var(--duration-very-slow) var(--ease-in-out) var(--duration-slow)}.reveal--wipe[data-revealed=true] .caption{opacity:1}@keyframes page-out{to{opacity:0;translate:0 var(--page-shift);filter:blur(var(--blur-medium))}}@keyframes page-in{0%{opacity:0;translate:0 calc(var(--page-shift) * -1);filter:blur(var(--blur-medium))}}:root[data-direction=forward]{--page-shift: calc(var(--distance-base) * -1)}:root[data-direction=back]{--page-shift: var(--distance-base)}:root[data-transition=page]::view-transition-old(root){animation:page-out var(--duration-quick) var(--ease-smooth-out) both}:root[data-transition=page]::view-transition-new(root){animation:page-in var(--duration-fast) var(--ease-smooth-out) both;animation-delay:var(--duration-stagger)}::view-transition-group(project-title),::view-transition-group(project-cover){animation-duration:var(--duration-slow);animation-timing-function:var(--ease-smooth-out)}::view-transition-old(project-title),::view-transition-new(project-title){height:100%;width:auto;object-fit:none;object-position:left center}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-property:opacity!important;animation-duration:1ms!important;animation-iteration-count:1!important}.row:hover .row__title,.row--link:focus-visible .row__title,.icon{translate:none!important}.reveal--wipe .media,.cursor-preview img{clip-path:none!important}}
