@font-face{font-family:Geist;src:url(/fonts/geist/Geist-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/fonts/geist-mono/GeistMono-Medium.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/fonts/geist-mono/GeistMono-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:ABC Gaisyr;src:url(/fonts/abc-gaisyr/subset-ABCGaisyr-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--bg-light:#fff;--bg-dark:#0a0a0a;--space-x-small:5px;--space-small:10px;--space-medium:15px;--space-large:20px;--gutter:var(--space-large);--gutter-safe:max(var(--gutter), env(safe-area-inset-left,0px), env(safe-area-inset-right,0px));--row-padding:6px;--header-side:60px;--about-measure:1128px;--project-gap:var(--space-large);--project-desc-top:30px;--project-block-gap:40px;--project-end:var(--space-large);--project-type-gap:11px;--project-measure:1053px;--stroke-hairline:1px;--radius-x-small:.5px;--icon-theme-width:22px;--icon-theme-height:12px;--icon-theme-dot:8px;--icon-theme-inset:2px;--opacity-muted:.4;--opacity-faint:.1;--font-body:"Geist", system-ui, sans-serif;--font-mono:"Geist Mono", ui-monospace, monospace;--font-serif:"ABC Gaisyr", serif;--size-body:18px;--size-mono:12px;--size-label:12px;--size-serif:14px;--size-serif-large:20px;--weight-regular:400;--weight-medium:500;--leading-body:normal;--leading-mono:normal;--leading-label:normal;--leading-serif:normal;--tracking-body:0;--tracking-mono:0;--tracking-label:0;--tracking-serif:0;--underline-thickness:.08em;--underline-offset:.15em;--trim-mono-top:.29em;--trim-mono-bottom:.333em;--trim-serif-top:.3em;--trim-serif-bottom:.357em;--size-bio-mobile:16px;--size-label-mobile:14px;--size-credit-mobile:12px;--size-index:18px;--index-gap:40px;--mobile-block-gap:40px;--contacts-gap-mobile:6px;--leading-credits-mobile:20px}@media (width<=745px){:root{--gutter:var(--space-medium)}}:root{--bg:var(--bg-light);--theme-icon-on:0;--ink:#fff;--ink-inverse:#000;--header-h:3.5rem;--list-h:9rem;--credit-h:1.5rem;--safe-bottom:env(safe-area-inset-bottom,0px);--list-duration:.2s;--list-ease:ease;--media-close-duration:calc(var(--list-duration) + .1s);--switch-duration:.15s;--z-project:1;--z-media:2;--z-desc:9;--z-chrome:10;--z-veil:100}:root[data-theme=dark]{--bg:var(--bg-dark);--theme-icon-on:1}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:var(--bg-dark);--theme-icon-on:1}}*,:before,:after{box-sizing:border-box}html{background:var(--bg);color:var(--ink);overscroll-behavior:none;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;text-size-adjust:100%;touch-action:manipulation;overflow-x:clip}body{background:var(--bg);min-height:100svh;color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}img,picture,video,canvas,svg,iframe{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}button{font:inherit;text-transform:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}::selection{background:var(--ink);color:var(--ink-inverse)}:focus-visible{outline-offset:2px;outline:2px solid}.page-veil{z-index:var(--z-veil);background:var(--bg);pointer-events:none;animation:.2s 1.5s forwards page-veil-out;position:fixed;inset:0}.page-veil.is-done{opacity:0;transition:opacity .2s;animation:none}@keyframes page-veil-out{to{opacity:0}}.site-header{inset-inline:0;z-index:var(--z-chrome);padding:max(var(--space-medium), env(safe-area-inset-top,0px)) var(--gutter-safe) 0;mix-blend-mode:difference;color:var(--ink);pointer-events:none;grid-template-columns:1fr auto 1fr;align-items:center;display:grid;position:fixed;top:0}.site-header>*{pointer-events:auto}.site-header>:first-child{justify-self:start}.site-header>:nth-child(2){text-align:center;justify-self:center}.site-header>:last-child{justify-self:end}.lang-toggle{inline-size:var(--header-side);justify-content:space-between;align-items:center;display:flex}.lang-toggle button{opacity:var(--opacity-muted);transition:opacity .2s}.lang-toggle button[aria-pressed=true]{opacity:1}.theme-toggle{align-items:center;display:flex}.theme-icon{inline-size:var(--icon-theme-width);block-size:var(--icon-theme-height);padding:var(--icon-theme-inset);border-radius:var(--radius-x-small);outline:var(--stroke-hairline) solid currentColor;outline-offset:calc(var(--stroke-hairline) / -2);display:flex}.theme-icon-dot{--theme-icon-travel:calc(var(--icon-theme-width) - var(--icon-theme-inset) * 2 - var(--icon-theme-dot));inline-size:var(--icon-theme-dot);block-size:var(--icon-theme-dot);transform:translateX(calc(var(--theme-icon-travel) * var(--theme-icon-on)));background:currentColor;transition:transform .2s}.site-credit{inset-inline:0;top:var(--header-h);bottom:var(--list-h);z-index:var(--z-project);color:var(--ink);mix-blend-mode:difference;opacity:var(--opacity-faint);pointer-events:none;text-align:center;transition:opacity var(--list-duration) var(--list-ease);justify-content:center;align-items:center;display:flex;position:fixed}.site-credit p{margin:0}.has-project .site-credit{opacity:0;transition:none}.project-list{inset-inline:0;z-index:var(--z-chrome);padding:0 var(--gutter-safe) var(--gutter);mix-blend-mode:difference;color:var(--ink);pointer-events:none;position:fixed;bottom:0}.project-items{margin:0;padding:0;list-style:none;position:relative}.project-index{display:contents}.works-toggle,.desc-toggle,.project-site{display:none}.project-items>li+li{margin-block-start:calc(var(--stroke-hairline) * -1)}.project-row{text-align:start;border-block:var(--stroke-hairline) solid currentColor;width:100%;padding-block:var(--row-padding);pointer-events:auto;border-block-start-color:#0000;justify-content:space-between;align-items:flex-end;transition:opacity .2s;display:flex}.project-items>li:first-child>.project-row,.project-row:hover,.project-row:focus-visible,.project-row[aria-expanded=true]{border-block-start-color:currentColor}.project-row>*{white-space:nowrap;flex:none}.discipline{white-space:nowrap}.project-list:hover .project-row{opacity:var(--opacity-muted)}.project-list .project-row:hover,.project-list .project-row:focus-visible,.project-list .project-row[aria-expanded=true]{opacity:1}.project-list.is-open{top:var(--list-top);flex-direction:column;display:flex}.project-list.is-open .project-items{flex-direction:column;flex:1;min-height:0;display:flex}:is(.project-items>li,.project-window){will-change:transform}:is(.project-items>li,.project-window).is-moving{transition:transform var(--list-duration) var(--list-ease), clip-path var(--list-duration) var(--list-ease);transform:translateY(0)}:is(.project-items>li,.project-window).is-moving.is-resizing{clip-path:polygon(0 0,100% 0,100% 100%,0 100%);overflow:visible}:is(.project-items>li,.project-window).is-moving.is-flipping{transform:translateY(var(--dy));transition:none}:is(.project-items>li,.project-window).is-moving.is-resizing.is-flipping{clip-path:polygon(0 0, 100% 0, 100% calc(100% - var(--dh)), 0 calc(100% - var(--dh)))}.project-items>li.is-open{flex:1;min-height:0}.project-windows{z-index:var(--z-project);mix-blend-mode:difference;color:var(--ink);pointer-events:none;position:fixed;inset:0}.project-window{inset-inline:var(--gutter-safe);top:var(--window-top,0);height:var(--window-h,0);pointer-events:auto;position:absolute}.project-window[hidden]{display:none}.project-window a.is-covered{pointer-events:none}.project-window:is(.is-open,.is-closing){overflow:clip}.project-window.is-closing.is-moving.is-resizing{clip-path:inset(0 0 var(--clip-end,0) 0);overflow:clip}.project-window.is-closing.is-moving.is-resizing.is-flipping{clip-path:inset(0)}.project-items>li:is(.is-open,.is-closing)>.project-row{border-block-end-color:#0000}.project-list.is-open .project-row{opacity:var(--opacity-muted)}.project-list.is-open .project-row:hover,.project-list.is-open .project-row:focus-visible,.project-list.is-open .project-row[aria-expanded=true]{opacity:1}.project-items>li:is(.is-open,.is-closing)+li>.project-row{border-block-start-color:currentColor}.project-items:has(>li:is(.is-open,.is-closing):last-child):after{content:"";inset-inline:0;border-block-end:var(--stroke-hairline) solid currentColor;opacity:var(--opacity-muted);position:absolute;bottom:0}.project-panel{height:100%;padding-block:calc(var(--stroke-hairline) + var(--project-desc-top)) var(--project-end);text-align:center;flex-direction:column;align-items:center;display:flex;position:relative}.project-info{align-items:center;gap:var(--project-type-gap);flex-direction:column;margin-block-start:var(--project-block-gap);display:flex}.project-panel.is-compact>.project-info{visibility:hidden;position:absolute;inset-inline:0}.project-panel>.is-moving{transition:transform var(--list-duration) var(--list-ease);transform:translateY(0)}.project-panel>.is-moving.is-flipping{transform:translateY(var(--dy));transition:none}.project-panel p{margin:0}.project-description{max-inline-size:var(--project-measure)}.project-panel>:is(.project-hint,.project-visit){margin-block-start:auto;padding-block-start:var(--project-block-gap)}.project-panel>.project-hint,.is-pending{opacity:var(--opacity-muted)}.project-panel>.project-hint{transition:opacity var(--list-duration) var(--list-ease), transform var(--list-duration) var(--list-ease)}.media-last .project-panel>.project-hint{opacity:0}.scroll-area{z-index:var(--z-media);pointer-events:none;position:relative}.panel{inset-inline:0;top:var(--header-h);z-index:var(--z-chrome);mix-blend-mode:difference;color:var(--ink);transition:display var(--list-duration) allow-discrete;position:fixed}.panel[hidden]{display:none}.panel-text{padding-inline:var(--gutter-safe);transition:transform var(--list-duration) var(--list-ease);position:relative;overflow:clip;transform:translateY(0)}.panel-content{transition:transform var(--list-duration) var(--list-ease);transform:translateY(0)}.panel[hidden] .panel-text{transform:translateY(-100%)}.panel[hidden] .panel-content{transform:translateY(100%)}@starting-style{.panel:not([hidden]) .panel-text{transform:translateY(-100%)}.panel:not([hidden]) .panel-content{transform:translateY(100%)}}.panel.is-instant,.panel.is-instant *{transition:none}.about-text{align-items:center;gap:var(--space-medium);text-align:center;flex-direction:column;padding-block-start:var(--space-x-small);display:flex}.about-text :is(h2,p,ul){margin:0;padding:0}.about-cv{align-items:center;gap:var(--space-x-small);flex-direction:column;display:flex}.about-bio{max-inline-size:var(--about-measure)}.about-contacts{flex-direction:column;align-items:center;display:flex}.about-contacts ul{list-style:none}.about-contacts a{position:relative}.link-arrow{white-space:pre;position:absolute;inset-inline-end:100%}.media-stack{--media-w:60%;flex-direction:column;padding-block:100svh;display:flex}.media-stack[hidden]{display:none}.media{width:var(--media-w);aspect-ratio:var(--media-ratio,16 / 9);clip-path:inset(0);margin:0;margin-inline-start:calc(var(--gutter) + var(--media-r,.5) * (100% - 2 * var(--gutter) - var(--media-w)))}@supports (animation-timeline:view()){.media{animation:linear both media-enter view();animation-range:entry entry 25svh}}@keyframes media-enter{0%{opacity:0}}.media :is(img,video,iframe){object-fit:cover;border:0;width:100%;height:100%}.media :is(img,video){opacity:0;transition:opacity .3s}.media :is(img,video).is-loaded{opacity:1}.media--row{display:flex}.media--row>video{flex:var(--row-ratio) 1 0;min-width:0}.media-stack.is-closing{inset-inline:0;top:var(--stack-top,0);position:fixed}.media-stack.is-closing .media{clip-path:inset(50% 0);transition:clip-path var(--media-close-duration) var(--list-ease)}.media-stack.is-collapsed .media{clip-path:inset(50% 0)}.media-stack.is-animating .media{transition:clip-path var(--list-duration) var(--list-ease)}.media--embed{pointer-events:auto}.media-play{width:100%;height:100%;display:block;position:relative}.media-play-label{color:var(--ink);mix-blend-mode:difference;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}@media (width<=745px){.lang-toggle :is(span,button[aria-pressed=false]){display:none}.about-text{gap:var(--space-large);padding-block-start:var(--space-large)}.about-cv{gap:var(--space-medium)}.about-contacts,.about-contacts ul{align-items:center;gap:var(--contacts-gap-mobile);flex-direction:column;display:flex}.site-credit{top:auto;bottom:calc(var(--gutter) + var(--safe-bottom))}.project-list{top:var(--header-h);bottom:calc(var(--gutter) + var(--credit-h) + var(--mobile-block-gap) + var(--safe-bottom));flex-direction:column;padding-block-end:0;display:flex}.project-index{visibility:hidden;min-height:0;transition:transform var(--list-duration) var(--list-ease), visibility var(--list-duration);flex:1;display:flex;overflow:clip;transform:translateY(100%)}.project-items{transition:transform var(--list-duration) var(--list-ease);flex-direction:column;flex:1;justify-content:center;display:flex;transform:translateY(-100%)}.works-open .project-index,.works-open .project-items{visibility:visible;transform:translateY(0)}.project-items>li+li{margin-block-start:0}.project-row{padding-block:calc(var(--index-gap) / 2);border:0;justify-content:center}.project-row>:not(.project-title){display:none}.project-list:hover .project-row{opacity:1}.link .link-label{text-decoration-line:underline;text-decoration-style:solid;text-decoration-color:currentColor;text-decoration-thickness:var(--underline-thickness);text-underline-offset:var(--underline-offset);text-decoration-skip-ink:auto}:is(.site-header button,.works-toggle,.desc-toggle){position:relative}:is(.site-header button,.works-toggle,.desc-toggle):before{content:"";position:absolute;inset:-10px -12px}.works-toggle{pointer-events:auto;align-self:center;margin-block-start:auto;display:block}.toggle-sign{--sign-advance:.558em;--sign-space:.25em;--sign-left:.04em;--sign-size:.477em;--sign-stroke:.077em;--sign-raise:.06em;inline-size:var(--sign-advance);block-size:var(--sign-size);vertical-align:var(--sign-raise);margin-inline-start:var(--sign-space);display:inline-block;position:relative}.toggle-sign:before,.toggle-sign:after{content:"";inset-inline-start:var(--sign-left);top:calc(50% - var(--sign-stroke) / 2);inline-size:var(--sign-size);block-size:var(--sign-stroke);background:currentColor;position:absolute}.toggle-sign:after{transition:transform var(--list-duration) var(--list-ease);transform:rotate(90deg)}[aria-expanded=true]>.toggle-sign:after{transform:rotate(180deg)}body{position:relative}.has-project body{padding-block-end:calc(var(--gutter) + var(--credit-h) + var(--mobile-block-gap) + var(--safe-bottom))}.has-project .site-credit{opacity:var(--opacity-faint);position:absolute}.is-switching-out :is(.project-list,.panel,.site-credit,.project-windows,.scroll-area){animation:switch-out var(--switch-duration) ease forwards}.is-switched :is(.project-list,.panel,.site-credit,.project-windows,.scroll-area){animation:1ms forwards switch-hidden}.is-switching-in :is(.project-list,.panel,.site-credit,.project-windows,.scroll-area){animation:switch-in var(--switch-duration) ease}@keyframes switch-out{to{opacity:0}}@keyframes switch-hidden{0%,to{opacity:0}}@keyframes switch-in{0%{opacity:0}}.has-project .project-list{top:calc(var(--header-h) + var(--space-large));padding-block-end:0;bottom:auto}.has-project :is(.project-index,.project-items){visibility:visible;transition:none;display:block;overflow:visible;transform:none}.has-project .project-items>li:not(.is-open),.has-project .works-toggle,.has-project .project-items:after{display:none}.project-list.is-instant :is(.project-index,.project-items){transition:none}.has-project .project-items>li{will-change:auto}.has-project .project-site{inset-inline:0;top:calc(var(--header-h) + var(--space-large) + var(--list-h));bottom:calc(var(--gutter) + var(--credit-h) + var(--safe-bottom));text-align:center;justify-content:center;align-items:center;margin:0;display:flex;position:fixed}.has-project .project-site>*{clip-path:inset(0);transition:clip-path var(--list-duration) var(--list-ease), visibility var(--list-duration);pointer-events:auto;display:block}.desc-open .project-site>*{clip-path:inset(50% 0);visibility:hidden}.has-project .project-row{text-align:center;pointer-events:none;flex-direction:column;align-items:center;padding:0}.has-project .project-row>*{white-space:normal;margin-block:0;display:block}.has-project .project-title{margin-block-start:calc(var(--trim-mono-top) * -1)}.has-project .desc-toggle{margin-inline:auto;margin-block:1.3em calc(var(--trim-mono-bottom) * -1);margin-block:1lh calc(var(--trim-mono-bottom) * -1);pointer-events:auto;display:block}.desc-toggle .toggle-sign{--sign-advance:.6em;--sign-space:.6em;--sign-left:.06em;--sign-size:.48em;--sign-stroke:.09em;--sign-raise:.05em}.desc-toggle[aria-expanded=false] .desc-toggle-hide,.desc-toggle[aria-expanded=true] .desc-toggle-view{display:none}.has-project .project-windows{z-index:var(--z-desc);padding-block-start:calc(var(--header-h) + var(--space-large) + var(--list-h));position:relative;inset:auto}.project-window{height:auto;margin:var(--space-large) var(--gutter-safe) 0;position:relative;inset:auto}.project-window.is-pinned{inset-inline:0;top:var(--pin-top,0);margin-block-start:0;position:fixed}.project-window.is-clipping{clip-path:inset(0);transition:clip-path var(--list-duration) var(--list-ease)}.project-window.is-clipping.is-folded{clip-path:inset(0 0 100%)}.project-window.is-clipping.is-from{transition:none}.project-window a.is-covered{pointer-events:auto}.project-panel{height:auto;padding:0}.project-info,.project-panel.is-compact>.project-info{visibility:visible;margin-block-start:var(--space-large);position:static}.project-panel>:is(.project-hint,.project-visit--moved){display:none}.project-panel>.project-visit{margin-block-start:var(--space-large);padding:0}.media-stack{padding-block:var(--space-large) 0}.media{width:auto;margin-inline:0}}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.media{animation:none}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}body{font-family:var(--font-body);font-size:var(--size-body);line-height:var(--leading-body);letter-spacing:var(--tracking-body)}.site-header,.works-toggle{text-transform:uppercase}.project-row,.project-credits{font-family:var(--font-mono);font-size:var(--size-mono);font-weight:var(--weight-medium);line-height:var(--leading-mono);letter-spacing:var(--tracking-mono)}.about-label,.project-hint,.project-visit,.media-play-label{font-family:var(--font-mono);font-size:var(--size-label);font-weight:var(--weight-medium);line-height:var(--leading-label);letter-spacing:var(--tracking-label)}.about-label--caps,.project-hint,.project-visit,.media-play-label,.project-credits-label{text-transform:uppercase}.about-bio,.project-type,.site-credit{font-family:var(--font-serif);font-size:var(--size-serif);font-weight:var(--weight-regular);line-height:var(--leading-serif);letter-spacing:var(--tracking-serif)}.project-description{font-family:var(--font-serif);font-size:var(--size-serif-large);font-weight:var(--weight-regular);line-height:var(--leading-serif);letter-spacing:var(--tracking-serif)}.project-row>*,.project-credits:first-child{margin-block-start:calc(var(--trim-mono-top) * -1)}.project-row>*,.project-credits:last-child{margin-block-end:calc(var(--trim-mono-bottom) * -1)}.site-credit p{margin-block:calc(var(--trim-serif-top) * -1) calc(var(--trim-serif-bottom) * -1)}.link:hover .link-label,.link:focus-visible .link-label{text-decoration-line:underline;text-decoration-style:solid;text-decoration-color:currentColor;text-decoration-thickness:var(--underline-thickness);text-underline-offset:var(--underline-offset);text-decoration-skip-ink:auto}.about-bio,.project-description{text-wrap:pretty;overflow-wrap:break-word;white-space:pre-line}@media (width<=745px){.about-bio,.project-description{font-size:var(--size-bio-mobile)}.about-label,.project-visit{font-size:var(--size-label-mobile)}.site-credit{font-size:var(--size-credit-mobile)}.project-row{font-size:var(--size-index);font-weight:var(--weight-regular)}.has-project .project-row,.desc-toggle,.project-site{font-family:var(--font-mono);font-size:var(--size-label-mobile);font-weight:var(--weight-medium);line-height:var(--leading-mono);text-transform:uppercase}.has-project .project-row{text-transform:none}.project-credits{line-height:var(--leading-credits-mobile)}.project-credits:first-child{margin-block-start:calc(var(--trim-mono-top) * -1 - (var(--leading-credits-mobile) - 1.3em) / 2)}.project-credits:last-child{margin-block-end:calc(var(--trim-mono-bottom) * -1 - (var(--leading-credits-mobile) - 1.3em) / 2)}}
