*,*:before,*:after{box-sizing:border-box}.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}html,body,#root{margin:0;min-height:100%}body{font-family:var(--font-body);font-size:var(--text-body);color:var(--color-text-content);background-color:var(--color-bg);line-height:1.45;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer}a{color:inherit}img{max-width:100%;display:block}h1,h2,h3,p{margin:0}h1,h2{color:var(--color-text-title);letter-spacing:var(--title-letter-spacing)}h1{font-size:var(--text-h1);font-weight:600}h2{font-size:var(--text-h2);font-weight:500}.app-layout{width:100%;max-width:none;min-height:100dvh;margin:0;padding:var(--page-padding);display:flex;flex-direction:column;gap:var(--section-gap)}.switcher-btn{background:var(--color-button-bg);color:var(--color-button-text);border:var(--stroke-width) solid var(--color-stroke);border-radius:var(--radius-default);padding:var(--control-padding);font-size:var(--text-caption);font-weight:500;transition:opacity .15s ease}.switcher-btn:hover{opacity:.85}.switcher-btn.is-active{outline:none;background:var(--color-bg)}.switcher-row,.main-content-switcher{display:flex;flex-wrap:wrap;gap:0}.upper-container{display:flex;flex-direction:column;gap:0;border:var(--stroke-width) solid var(--color-stroke);background:var(--color-bg);overflow:hidden}.site-header{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:stretch;width:100%;min-height:var(--projects-bar-height);border-bottom:var(--stroke-width) solid var(--color-stroke);background:var(--color-bg);box-sizing:border-box}.site-header-title{display:block;flex:1 1 auto;width:auto;min-width:0;margin:0;padding:.35rem .75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-right:var(--stroke-width) solid var(--color-stroke);border-bottom:none;font-size:var(--text-h2);font-weight:600;line-height:1.2;letter-spacing:var(--title-letter-spacing);color:var(--color-text-title);box-sizing:border-box}.site-header__actions{display:flex;flex:0 0 auto;flex-wrap:nowrap;align-items:stretch;width:auto;min-height:unset}.top-bar-btn{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:2.75rem;max-width:2.75rem;padding:0 .1rem;overflow:visible;color:var(--color-text-title);background:transparent;border:none;border-left:var(--stroke-width) solid var(--color-stroke);border-radius:0;font-family:var(--font-display);font-size:.62rem;font-weight:400;letter-spacing:.04em;line-height:1;text-decoration:none;text-shadow:0 0 calc(var(--title-bloom-near) * .65) currentColor,0 0 calc(var(--title-bloom-far) * .65) color-mix(in srgb,currentColor 55%,transparent);cursor:pointer}.top-bar-btn:hover,.top-bar-btn:focus-visible{color:#fff;background:transparent;outline:none}.top-bar-btn__icon{display:block;width:1rem;height:1rem;overflow:visible;filter:drop-shadow(0 0 calc(var(--title-bloom-near) * .65) currentColor) drop-shadow(0 0 calc(var(--title-bloom-far) * .45) currentColor)}.upper-container__body{display:flex;flex-direction:column;gap:0;min-width:0;flex:1}.intro-page__top{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(7.5rem,.72fr);align-items:stretch;min-width:0;background-color:var(--color-surface);border:2px solid var(--color-stroke)}.intro-page__identity{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:.55rem;min-width:0;padding:var(--content-padding);border-left:2px solid var(--color-stroke);background-color:var(--color-surface)}.intro-page__identity .portfolio-div{flex-direction:column;align-items:center;justify-content:center;width:100%}.description-div{display:flex;flex:1 1 auto;flex-direction:column;justify-content:flex-start;min-width:0;min-height:0;padding:var(--content-padding);align-self:stretch;background-color:var(--color-surface)}.description-div__body{margin-top:.35rem;color:var(--color-text-content);white-space:pre-wrap}.description-div__body a{color:var(--color-text-title);font-weight:600;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.15em}.description-div__body a:hover,.description-div__body a:focus-visible{color:var(--color-accent)}.intro-page__bottom .description-div{border:2px solid var(--color-stroke)}.portfolio-div{display:flex;align-items:center;justify-content:center}.portfolio-portrait{flex-shrink:0;width:100%;display:flex;justify-content:center}.portfolio-portrait__image{width:min(100%,7.5rem);height:auto;aspect-ratio:1;border-radius:var(--radius-portrait);object-fit:cover;display:block;background:var(--color-surface-muted)}.intro-page__identity .portfolio-portrait__image{border:3px solid var(--color-stroke);box-shadow:0 0 .8rem color-mix(in srgb,var(--color-stroke) 35%,transparent)}.project-filters-dropdown{position:relative;flex-shrink:0;height:100%;border-left:var(--stroke-width) solid var(--color-stroke)}.project-filters-dropdown__trigger{font-size:var(--text-caption);height:100%;min-height:var(--projects-bar-height);border:none;border-radius:0}.project-filters-dropdown__badge{margin-left:.35rem;opacity:.85;font-size:.85em}.project-filters-dropdown__menu{position:absolute;top:100%;right:0;z-index:20;min-width:11rem;margin:0;padding:0;list-style:none;background:var(--color-surface);border:var(--stroke-width) solid var(--color-stroke);border-radius:var(--radius-default);box-shadow:none}.project-filters-dropdown__option{display:flex;align-items:center;gap:.4rem;padding:.35rem .5rem;font-size:var(--text-caption);color:var(--color-text-content);cursor:pointer;white-space:nowrap;border-bottom:var(--stroke-width) solid var(--color-stroke)}.project-filters-dropdown__option:last-child{border-bottom:none}.project-filters-dropdown__swatch{width:.5rem;height:.5rem;border-radius:var(--radius-default);flex-shrink:0}.project-filters-dropdown__label{flex:1}.project-filters-dropdown__option:hover{background:var(--color-bg)}.project-filters-dropdown__option input{flex-shrink:0}.project-filters-dropdown__option{--filter-color: var(--tag-color-others)}.project-filters-dropdown__option--papers{--filter-color: var(--tag-color-papers)}.project-filters-dropdown__option--posters{--filter-color: var(--tag-color-posters)}.project-filters-dropdown__option--demos{--filter-color: var(--tag-color-demos)}.project-filters-dropdown__option--exhibitions{--filter-color: var(--tag-color-exhibitions)}.project-filters-dropdown__option--competitions{--filter-color: var(--tag-color-competitions)}.project-filters-dropdown__option--workshops{--filter-color: var(--tag-color-workshops)}.project-filters-dropdown__option--firstAuthors{--filter-color: var(--tag-color-firstAuthors)}.project-filters-dropdown__option--groupArtworks{--filter-color: var(--tag-color-artworks)}.project-filters-dropdown__option--others{--filter-color: var(--tag-color-others)}.project-filters-dropdown__swatch{background-color:var(--filter-color)}.project-filters-dropdown__label{color:var(--filter-color)}.project-filters-dropdown__option input{accent-color:var(--filter-color)}.downward-container{display:flex;flex-direction:column;gap:var(--card-gap)}.project-list{display:flex;flex-direction:column;gap:var(--card-gap);padding:var(--card-padding);border:var(--stroke-width) solid var(--color-stroke);background:var(--color-bg)}.project-card{display:flex;flex-direction:column;align-items:stretch;gap:.75rem;padding:var(--card-padding);background:var(--color-surface);border-radius:var(--radius-default);border:var(--stroke-width) solid var(--color-stroke)}.project-card__intro{display:flex;flex-direction:column;gap:.55rem;width:100%;order:1}.project-card__media{order:0;width:100%;aspect-ratio:var(--project-image-aspect-ratio);background:var(--color-bg);border-radius:var(--radius-default);overflow:hidden}.project-card__media img{width:100%;height:100%;object-fit:cover}.project-card__media--clickable{cursor:pointer}.project-card__content{display:flex;flex:1;flex-direction:column;align-items:flex-start;gap:.4rem;order:2;min-width:0;padding:0}.project-card__head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.45rem 1rem;width:100%}.project-card__types{display:flex;align-items:center;flex-wrap:wrap;gap:.18rem .28rem;margin-top:.1rem}.project-card__title{margin:0;color:var(--color-text-title);font-size:var(--text-h2);font-weight:600;line-height:1.25}.project-card__credits{display:flex;align-items:center;flex-wrap:wrap;gap:.25rem;margin-left:auto}.project-card__credit{color:var(--color-text-title);font-size:var(--text-body);font-weight:600;line-height:1.2;white-space:nowrap;border:var(--stroke-width) solid color-mix(in srgb,var(--color-text-title) 65%,var(--color-stroke));background:color-mix(in srgb,var(--color-text-title) 12%,var(--color-surface));padding:.16rem .55rem}.project-card__credit-type,.project-card__type-tag,.project-card__status{--project-tag-color: var(--tag-color-others);font-size:.7rem;line-height:1.1;border-radius:var(--radius-default);padding:.08rem .28rem;border:var(--stroke-width) solid color-mix(in srgb,var(--project-tag-color) 78%,transparent);color:var(--project-tag-color);background-color:color-mix(in srgb,var(--project-tag-color) 14%,var(--color-surface))}.project-card__credit-type{background-color:color-mix(in srgb,var(--project-tag-color) 20%,var(--color-surface))}.project-card__type-tag{background-color:transparent;border-style:dashed}.project-card__credit-type--papers,.project-card__type-tag--fullPapers{--project-tag-color: var(--tag-color-papers)}.project-card__credit-type--competitions,.project-card__type-tag--competitions{--project-tag-color: var(--tag-color-competitions)}.project-card__credit-type--exhibitions,.project-card__type-tag--exhibitions{--project-tag-color: var(--tag-color-exhibitions)}.project-card__type-tag--posters{--project-tag-color: var(--tag-color-posters)}.project-card__type-tag--demos{--project-tag-color: var(--tag-color-demos)}.project-card__type-tag--workshops{--project-tag-color: var(--tag-color-workshops)}.project-card__credit-type--others{--project-tag-color: var(--tag-color-others)}.project-card__status--firstAuthors{--project-tag-color: var(--tag-color-firstAuthors);border-style:dashed}.project-card__status--groupArtworks{--project-tag-color: var(--tag-color-artworks);border-style:dashed}.project-card__body{width:100%;margin:0;padding-top:.45rem;color:var(--color-text-content);white-space:pre-wrap;border-top:var(--stroke-width) solid var(--color-stroke)}.project-card__refs{display:flex;flex-flow:row wrap;gap:.55rem;margin-top:.2rem}.project-card__ref-link{display:inline-flex;align-items:center;min-height:2.1rem;font-size:var(--text-body);font-weight:600;letter-spacing:.03em;color:var(--color-text-title);text-decoration:none;border:var(--stroke-width) solid color-mix(in srgb,var(--color-text-title) 65%,var(--color-stroke));border-radius:var(--radius-default);background:color-mix(in srgb,var(--color-text-title) 10%,var(--color-surface));padding:.25rem .75rem;transition:color .15s ease,background-color .15s ease}.project-card__ref-link:hover{color:var(--color-bg);background:var(--color-text-title)}.sparkle-text__char{color:inherit}.content-page,.intro-page{background-color:var(--color-bg);background-image:linear-gradient(to right,color-mix(in srgb,var(--color-text-title) calc(var(--grid-opacity) * 100%),transparent) 1px,transparent 1px),linear-gradient(to bottom,color-mix(in srgb,var(--color-text-title) calc(var(--grid-opacity) * 100%),transparent) 1px,transparent 1px);background-size:var(--grid-size) var(--grid-size);background-attachment:fixed}.content-page__heading h1,.site-header-title,.description-div h2,.content-page__heading h1 .sparkle-text__char,.site-header-title .sparkle-text__char,.description-div h2 .sparkle-text__char{text-shadow:0 0 var(--title-bloom-near) currentColor,0 0 var(--title-bloom-far) color-mix(in srgb,currentColor 55%,transparent)}.project-list__empty{color:var(--color-text-content);font-size:var(--text-caption);text-align:center;padding:.75rem}@media(min-width:768px){.portfolio-portrait__image{width:min(100%,9.5rem)}.project-card{display:grid;grid-template-columns:11rem minmax(0,1fr);grid-template-areas:"intro intro" "media content";align-items:stretch;column-gap:.9rem;row-gap:.75rem}.project-card__intro{grid-area:intro;order:0;padding-bottom:.15rem;border-bottom:var(--stroke-width) solid var(--color-stroke)}.project-card__media{grid-area:media;position:relative;order:0;width:11rem;height:auto;aspect-ratio:auto}.project-card__media img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.project-card__content{grid-area:content;order:0}.project-card__body{padding-top:0;border-top:0}}.page-content{display:flex;flex:1 0 auto;flex-direction:column;width:100%}.site-header-title{text-decoration:none;font-family:var(--font-display)}.intro-page,.content-page{display:flex;flex:1 0 auto;flex-direction:column;align-items:center;width:100%;min-height:calc(100dvh - var(--projects-bar-height))}.content-page>*,.intro-page>*{width:100%;max-width:var(--max-width)}.content-page,.intro-page{gap:var(--card-gap);padding:var(--content-padding)}.content-page__heading{display:flex;align-items:center;justify-content:space-between;gap:var(--card-gap);min-height:var(--projects-bar-height);padding:var(--control-padding);background-color:var(--color-surface);border:var(--stroke-width) solid var(--color-stroke)}.content-page__heading h1{font-family:var(--font-display);font-size:var(--text-h2)}.works-page .content-page__heading{padding-right:0;align-items:stretch}.works-page .content-page__heading h1{display:flex;align-items:center}.intro-page .description-div h2{font-family:var(--font-display);font-size:var(--text-h2)}.home-page{position:relative;flex:1 0 auto;width:100%;max-width:none;min-height:calc(100dvh - var(--projects-bar-height));overflow:visible}.home-stage{position:relative;display:flex;align-items:center;justify-content:center;width:100%;min-width:0;min-height:max(34rem,calc(100svh - var(--projects-bar-height)));min-height:max(34rem,calc(100dvh - var(--projects-bar-height)));overflow:visible;isolation:isolate}.home-ui{position:relative;z-index:3;display:flex;flex-direction:column;align-items:center;gap:var(--card-gap);width:100%;padding:clamp(2rem,8vh,5rem) 0;pointer-events:none}.home-profile{display:flex;align-items:center;justify-content:center;pointer-events:none}.home-profile__frame{--profile-accent: #F4F4F4;position:relative;display:grid;place-items:center;width:clamp(5.5rem,13vw,7.5rem);aspect-ratio:1;overflow:hidden;padding:.25rem;background:var(--color-bg);border:2px solid var(--color-stroke);border-radius:50%;box-shadow:0 0 0 .28rem var(--profile-accent),0 0 1.4rem color-mix(in srgb,var(--profile-accent) 78%,transparent),inset 0 0 1rem color-mix(in srgb,var(--profile-accent) 28%,transparent)}.home-profile__frame--buzzing{animation:portrait-frame-buzz var(--home-portrait-buzz-ms) steps(5,end) both}.home-profile .portfolio-portrait{width:100%;height:100%}.home-profile .portfolio-portrait__image{width:100%;height:100%;max-width:none;border-radius:var(--radius-portrait);object-fit:cover}.home-profile__buzz{position:absolute;top:.25rem;right:.25rem;bottom:.25rem;left:.25rem;z-index:2;border-radius:50%;pointer-events:none;background:repeating-linear-gradient(0deg,transparent 0 .18rem,color-mix(in srgb,var(--profile-accent) 78%,transparent) .18rem .27rem),repeating-linear-gradient(90deg,color-mix(in srgb,var(--profile-accent) 38%,transparent) 0 .08rem,transparent .08rem .34rem),color-mix(in srgb,var(--profile-accent) 42%,transparent);background-size:100% 100%,140% 140%,100% 100%;mix-blend-mode:color;filter:url(#portrait-buzz-filter);opacity:0;animation:portrait-buzz var(--home-portrait-buzz-ms) steps(7,end) both}.home-page__hint{width:var(--home-stack-max-width);max-width:100%;padding:0 .75rem;color:var(--color-text-content);font-family:var(--font-hud);font-size:clamp(.65rem,.8vw + .45rem,.95rem);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;overflow:hidden;scrollbar-width:none;-ms-overflow-style:none}.home-page__hint::-webkit-scrollbar{display:none;width:0;height:0}.home-page__hint-track{display:flex;width:max-content;min-width:max-content;white-space:nowrap;will-change:transform;animation:home-hint-scroll 26s linear infinite}.home-page__hint-copy{display:block;flex:0 0 auto;padding-right:3rem}.home-link-stack{display:grid;gap:var(--home-stack-gap);width:var(--home-stack-max-width);max-width:100%;pointer-events:none}.glow-button{position:relative;display:flex;align-items:center;justify-content:center;min-height:var(--home-button-min-height);padding:.75rem 1rem;overflow:visible;color:var(--color-text-title);background:color-mix(in srgb,var(--color-surface) 78%,transparent);border:var(--stroke-width) solid var(--color-stroke);border-radius:var(--radius-default);font-family:var(--font-display);font-size:clamp(1rem,2.8vw,1.65rem);letter-spacing:.12em;text-decoration:none;text-shadow:0 0 var(--glow-blur) currentColor;box-shadow:0 0 var(--glow-spread) color-mix(in srgb,currentColor 70%,transparent),inset 0 0 1.25rem color-mix(in srgb,currentColor 12%,transparent);pointer-events:auto;transition:transform .16s ease,background-color .16s ease,box-shadow .16s ease}.glow-button:before,.glow-button:after{position:absolute;content:"";pointer-events:none}.glow-button:before{top:0;right:0;bottom:0;left:0;z-index:-1;background:linear-gradient(90deg,transparent 0 8%,currentColor 8% 9%,transparent 9% 100%),repeating-linear-gradient(0deg,transparent 0 var(--glow-scanline-size),color-mix(in srgb,currentColor 20%,transparent) var(--glow-scanline-size) calc(var(--glow-scanline-size) * 2));opacity:var(--glow-scanline-opacity);mix-blend-mode:screen}.glow-button:after{inset:calc(var(--glow-bleed) * -1);z-index:-2;border:var(--stroke-width) solid color-mix(in srgb,currentColor 55%,transparent);box-shadow:0 0 var(--glow-blur) currentColor,inset 0 0 var(--glow-blur) color-mix(in srgb,currentColor 45%,transparent);opacity:.7;animation:glow-button-flicker var(--glow-flicker-ms) steps(2,end) infinite}.glow-button:hover,.glow-button:focus-visible{transform:translateY(-.15rem);background:color-mix(in srgb,var(--color-surface) 58%,currentColor 12%);box-shadow:0 0 calc(var(--glow-blur) * 1.5) currentColor,inset 0 0 1.5rem color-mix(in srgb,currentColor 18%,transparent);outline:none}.glow-button:focus-visible{filter:url(#glow-button-filter)}.glow-button .sparkle-text__char{display:inline-block;margin-inline:var(--home-letter-gap);text-shadow:0 0 var(--glow-blur) currentColor}.glow-button .sparkle-text__char--space{width:.42em;margin-inline:.08em}.home-effects{position:absolute;width:0;height:0;pointer-events:none}.game-canvas{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:block;width:100%;height:100%;image-rendering:pixelated;touch-action:none}.game-hud{display:flex;align-items:center;gap:1rem;width:var(--home-stack-max-width);max-width:100%;color:var(--color-text-content);font-family:var(--font-hud);font-size:1.2rem;letter-spacing:.06em;pointer-events:auto}.game-hud__stats{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem}.game-hud__stats strong{color:var(--color-text-title)}.game-hud__event{color:var(--tag-color-competitions);text-transform:uppercase}@media(max-width:767px){.intro-page__top{grid-template-columns:1fr}.intro-page__identity{grid-row:1;border-left:0;border-bottom:2px solid var(--color-stroke)}.intro-page__top>.description-div{grid-row:2}.home-ui{gap:.65rem;padding:clamp(1.25rem,5vh,2.75rem) 0 clamp(2.5rem,8vh,4rem)}.home-profile__frame{width:clamp(4.25rem,18vw,5.75rem)}.home-page__hint{width:min(82vw,21rem);max-width:100%;padding-inline:.5rem;font-size:clamp(.52rem,2.4vw,.82rem);letter-spacing:.04em}.home-link-stack{width:min(82vw,21rem);gap:.55rem}.glow-button{min-height:clamp(3rem,8vh,4.25rem);padding:.45rem .65rem;font-size:clamp(.82rem,4vw,1.15rem)}}@keyframes glow-button-flicker{0%,to{opacity:.52}50%{opacity:.82}}@keyframes home-hint-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}@keyframes portrait-frame-buzz{0%,to{transform:translate(0)}18%{transform:translate(-1px,1px)}36%{transform:translate(1px,-1px)}58%{transform:translate(-1px)}76%{transform:translate(1px,1px)}}@keyframes portrait-buzz{0%{opacity:0;transform:translate(0) scale(1);background-position:0 0,0 0,0 0}14%,62%{opacity:.82}28%{transform:translate(-1px,1px) scale(1.02);background-position:0 .12rem,.18rem -.08rem,0 0}48%{transform:translate(1px,-1px) scale(.98);background-position:0 -.08rem,-.14rem .1rem,0 0}to{opacity:0;transform:translate(0) scale(1);background-position:0 0,0 0,0 0}}@keyframes portrait-buzz-reduced{0%,to{opacity:0}35%,65%{opacity:.45}}.link-list{display:grid;gap:var(--card-gap);margin:0;padding:0;list-style:none}.link-list__link{display:flex;align-items:center;gap:1rem;min-height:4.5rem;padding:var(--card-padding);color:var(--color-text-title);background:var(--color-surface);border:var(--stroke-width) solid var(--color-stroke);text-decoration:none;transition:transform .16s ease,background-color .16s ease}.link-list__link:hover,.link-list__link:focus-visible{transform:translate(.25rem);background:var(--color-bg);outline:none}.link-list__icon{width:var(--icon-size);height:var(--icon-size);flex:0 0 auto}.link-list__copy{display:flex;flex:1;flex-direction:column;min-width:0;gap:.2rem}.link-list__label{color:var(--color-text-title);font-family:var(--font-display)}.link-list__detail{color:var(--color-text-content);font-size:var(--text-caption);overflow-wrap:anywhere}.link-list__arrow{color:var(--color-text-content);font-family:var(--font-hud);font-size:1.5rem}.link-list__empty{padding:var(--card-padding);color:var(--color-text-content);background:var(--color-surface);border:var(--stroke-width) solid var(--color-stroke);font-family:var(--font-hud);text-align:center}@media(min-width:768px){.intro-page .description-div,.content-page{padding:clamp(1rem,3vw,2.5rem)}}@media(prefers-reduced-motion:reduce){.glow-button,.link-list__link{transition:none}.home-page__hint-track{animation:none;transform:none}.glow-button:after{animation:none}.home-profile__frame--buzzing{animation:none}.home-profile__buzz{animation:portrait-buzz-reduced var(--home-portrait-buzz-ms) ease-out both;filter:none}}
