@font-face{font-family:HY Keep Running;src:url(/font/HYKeepRunning-45U.woff2) format("woff2");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:HY Keep Running;src:url(/font/HYKeepRunning-65U.woff2) format("woff2");font-style:normal;font-weight:600;font-display:swap}@font-face{font-family:HY Keep Running;src:url(/font/HYKeepRunning-75U.woff2) format("woff2");font-style:normal;font-weight:700;font-display:swap}.portfolio-page{font-family:var(--sans);letter-spacing:0}.portfolio-page[lang=zh-CN]{font-family:HY Keep Running,Microsoft YaHei,PingFang SC,sans-serif}.portfolio-language-switcher{gap:.4rem;color:rgba(23,23,19,.35);font-family:var(--sans);font-size:.7rem;font-weight:600}.portfolio-language-switcher a{display:inline-flex;align-items:center;justify-content:center;border-bottom:1px solid transparent;padding:.2rem 0;color:rgba(23,23,19,.55);line-height:1;text-decoration:none}.portfolio-language-switcher a.is-active{border-bottom-color:#171713;color:#171713}.portfolio-admin-link,.portfolio-admin-link:hover,.portfolio-subpage-home-link,.portfolio-subpage-home-link:visited{color:#171713}.portfolio-subpage-home-link:hover{color:#5e60ad}.portfolio-nav-link{color:rgba(23,23,19,.62);text-decoration:none;transition:color .16s ease}.portfolio-nav-link:hover{color:#171713}.portfolio-games-section{overflow:hidden}.portfolio-games-layout{display:flex;align-items:center;gap:.9rem}.portfolio-games-icon{display:grid;width:3.25rem;height:3.25rem;place-items:center;border:1px solid rgba(255,255,255,.42);border-radius:.65rem;color:#f0c94b}.portfolio-games-kicker{margin:0;color:rgba(255,255,255,.8);font-size:.76rem;font-weight:750;letter-spacing:.08em;text-transform:uppercase}.portfolio-games-link{display:inline-flex;align-items:center;gap:.4rem;margin-left:auto;border-bottom:1px solid rgba(255,255,255,.56);padding-bottom:.2rem;color:#fff;font-size:.75rem;font-weight:750;text-decoration:none}.portfolio-games-link:hover{color:#f0c94b;border-bottom-color:#f0c94b}.portfolio-hero-photo{object-position:center 56%;filter:contrast(1.04) saturate(1.08)}.portfolio-hero-actions,.portfolio-hero-description,.portfolio-hero-name-line,.portfolio-hero-photo,.portfolio-hero-role,.portfolio-mobile-nav{will-change:transform,opacity}.portfolio-hero-name-line:last-child{position:relative;z-index:0;width:fit-content;perspective:50rem}.portfolio-shuffle-char{display:inline-block;text-align:center;will-change:color}.portfolio-name-letter{display:inline-block;transform-origin:center 58%}.portfolio-name-flip{animation:portfolio-name-flip 3.2s cubic-bezier(.65,0,.35,1) infinite;backface-visibility:visible;will-change:transform}.portfolio-name-flip:nth-child(4){animation-delay:.15s}.portfolio-name-flip:nth-child(8){animation-delay:.35s}@keyframes portfolio-name-flip{0%,32%{color:#5e60ad;transform:rotateY(0deg) translateY(0)}45%{color:#d6a900;transform:rotateY(180deg) translateY(-.08em)}58%,to{color:#5e60ad;transform:rotateY(1turn) translateY(0)}}.portfolio-hero-name-line:last-child:after{position:absolute;z-index:-1;right:-.08em;bottom:.04em;left:-.04em;height:.12em;background:#f0c94b;content:"";transform:rotate(-1.5deg);transform-origin:left center}.portfolio-hero-overlay{background:linear-gradient(90deg,rgba(247,247,244,.98),rgba(247,247,244,.94) 32%,rgba(247,247,244,.72) 48%,rgba(247,247,244,.32) 60%,rgba(247,247,244,0) 76%)}.portfolio-primary-action,.portfolio-secondary-action{display:inline-flex;min-height:2.75rem;align-items:center;justify-content:center;gap:.65rem;border-radius:.375rem;padding:.7rem 1rem;font-size:.875rem;font-weight:600;text-decoration:none;transition:transform .16s ease,background-color .16s ease,border-color .16s ease}.portfolio-primary-action{background:#171713;color:white}.portfolio-secondary-action{border:1px solid rgba(23,23,19,.2);color:#171713}.portfolio-primary-action:hover,.portfolio-secondary-action:hover{transform:translateY(-2px)}.portfolio-primary-action:hover{background:#5e60ad;color:white}.portfolio-secondary-action:hover{border-color:#171713;background:white;color:#171713}.portfolio-mobile-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;max-width:25rem;margin-top:.9rem;border-block:1px solid rgba(23,23,19,.12)}.portfolio-mobile-nav a{display:flex;min-width:0;min-height:3rem;align-items:center;justify-content:center;gap:.3rem;padding:.55rem .2rem;color:rgba(23,23,19,.66);font-size:.625rem;font-weight:600;text-decoration:none}.portfolio-mobile-nav a+a{border-left:1px solid rgba(23,23,19,.1)}.portfolio-mobile-nav a:focus-visible,.portfolio-mobile-nav a:hover{background:rgba(255,255,255,.45);color:#171713}.portfolio-mobile-nav span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portfolio-project{position:relative;min-height:17rem;padding:1.25rem;border-top:.2rem solid #5e60ad;transition:transform .22s ease,background-color .18s ease,border-color .18s ease}.portfolio-about-intro{display:grid;gap:.2rem}.portfolio-about-title-wrap{position:relative;width:fit-content;margin:.2rem 0 1rem .25rem}.portfolio-about-title,.portfolio-about-title-back{display:block;border-radius:.25rem}.portfolio-about-title{position:relative;z-index:1;margin:0;padding:.6rem .85rem;background:#5e60ad;color:#ffffff;font-size:1.35rem;font-weight:700;line-height:1;transform:rotate(-2deg);transform-origin:left center}.portfolio-page[lang=zh-CN] .portfolio-about-title,.portfolio-page[lang=zh-CN] .portfolio-publications-title,.portfolio-page[lang=zh-CN] .portfolio-work-title{font-family:HY Keep Running,Microsoft YaHei,PingFang SC,sans-serif}.portfolio-about-title-back{position:absolute;inset:0;background:#f0c94b;transform:translate(.45rem,.4rem) rotate(1deg)}.portfolio-about-copy{position:relative;max-width:60rem;margin:0;padding-left:1rem;color:#171713;font-size:.875rem;font-weight:300;line-height:1.48;text-align:justify;text-justify:inter-word;text-wrap:pretty;white-space:pre-line}.portfolio-about-copy:before{position:absolute;inset:0 auto 0 0;width:.2rem;border-radius:999px;background:#5e60ad;content:""}.portfolio-about-work{margin-top:1.35rem;padding-top:.85rem;border-top:1px solid rgba(23,23,19,.12)}.portfolio-about-label{margin:0 0 .7rem;color:rgba(23,23,19,.5);font-size:.7rem;font-weight:650;text-transform:uppercase}.portfolio-about-work-with-wrap{position:relative;padding-bottom:0}.portfolio-about-card-stage{position:relative;display:grid;width:100vw;height:100svh;min-height:100svh;margin-left:calc(50% - 50vw);place-items:center;overflow:hidden;isolation:isolate;background-color:#eaede9;background-image:radial-gradient(circle at 78% 38%,rgba(76,100,136,.16),transparent 28rem),radial-gradient(circle at 14% 80%,rgba(211,118,87,.07),transparent 24rem),linear-gradient(90deg,transparent 0 11.8%,rgba(62,82,113,.12) 11.9% 12.05%,transparent 12.15% 100%),linear-gradient(90deg,transparent 0 67.8%,rgba(62,82,113,.08) 67.9% 68.05%,transparent 68.15% 100%),linear-gradient(rgba(31,46,59,.045) 1px,transparent 0),linear-gradient(90deg,rgba(31,46,59,.045) 1px,transparent 0);background-position:50%;background-size:auto,auto,auto,auto,2.5rem 2.5rem,2.5rem 2.5rem}.portfolio-about-card-stage:after,.portfolio-about-card-stage:before{position:absolute;z-index:0;content:""}.portfolio-about-card-stage:before{right:0;bottom:0;width:min(72vw,45rem);aspect-ratio:1;background:url(/asset/arm.svg) 50%/contain no-repeat;opacity:.2;filter:saturate(.72) contrast(1.08)}.portfolio-about-card-stage:after{top:-8rem;left:-8rem;width:20rem;height:20rem;border:1px solid rgba(62,82,113,.18);border-radius:50%;box-shadow:inset 0 0 0 1.5rem rgba(62,82,113,.035),inset 0 0 0 4rem rgba(62,82,113,.03)}.portfolio-about-grid{position:relative;display:block;width:min(calc(100% - 5.625rem),38rem);height:9.85rem;margin:0 auto;overflow:visible;isolation:isolate;z-index:1}.portfolio-about-card-wrapper{position:absolute;inset:0;width:100%;perspective:500px}.portfolio-about-card{position:relative;overflow:hidden;isolation:isolate;width:100%;height:9.85rem;min-height:0;box-sizing:border-box;padding:.95rem;border:1px solid rgba(94,96,173,.22);border-radius:.32rem .7rem .5rem .62rem;background:linear-gradient(128deg,rgba(255,255,255,.5),transparent 38%),#e7e9ff;box-shadow:.42rem .48rem 0 rgba(94,96,173,.18),0 1rem 1.7rem rgba(23,23,19,.1);will-change:transform,opacity}.portfolio-about-card:before{position:absolute;top:-.32rem;left:50%;z-index:2;width:4.6rem;height:1.05rem;border:1px solid rgba(94,96,173,.16);border-radius:.08rem;background:rgba(215,218,255,.72);box-shadow:0 .08rem .16rem rgba(23,23,19,.07);content:"";transform:translateX(-50%) rotate(-2.5deg)}.portfolio-about-card:after{position:absolute;right:0;bottom:0;z-index:0;width:2.4rem;height:2.4rem;background:linear-gradient(135deg,transparent 49%,rgba(94,96,173,.14) 50%,rgba(255,255,255,.48) 51%);content:""}.portfolio-about-card>*{position:relative;z-index:1}.portfolio-about-card-wrapper:nth-child(3n+2) .portfolio-about-card{border-color:rgba(240,201,75,.38);background:linear-gradient(128deg,rgba(255,255,255,.52),transparent 38%),#fff0ae;box-shadow:.42rem .48rem 0 rgba(214,169,43,.24),0 1rem 1.7rem rgba(23,23,19,.1)}.portfolio-about-card-wrapper:nth-child(3n+2) .portfolio-about-card:before{border-color:rgba(190,143,0,.2);background:rgba(255,231,133,.76)}.portfolio-about-card-wrapper:nth-child(3n+2) .portfolio-about-card:after{background:linear-gradient(135deg,transparent 49%,rgba(190,143,0,.16) 50%,rgba(255,255,255,.48) 51%)}.portfolio-about-card-wrapper:nth-child(3n) .portfolio-about-card{border-color:rgba(224,82,62,.22);background:linear-gradient(128deg,rgba(255,255,255,.52),transparent 38%),#ffdeda;box-shadow:.42rem .48rem 0 rgba(202,99,85,.18),0 1rem 1.7rem rgba(23,23,19,.1)}.portfolio-about-card-wrapper:nth-child(3n) .portfolio-about-card:before{border-color:rgba(190,60,46,.18);background:rgba(255,204,197,.76)}.portfolio-about-card-wrapper:nth-child(3n) .portfolio-about-card:after{background:linear-gradient(135deg,transparent 49%,rgba(190,60,46,.14) 50%,rgba(255,255,255,.48) 51%)}.portfolio-about-card>span{display:block;color:#5e60ad;font-size:.65rem;font-weight:700}.portfolio-about-card h3{margin:1.1rem 0 0;color:#171713;font-size:.98rem;font-weight:650}.portfolio-about-card p{margin:.45rem 0 0;color:rgba(23,23,19,.58);font-size:.76rem;line-height:1.45}.portfolio-technology-loop{width:100vw;margin-top:2.5rem;margin-left:calc(50% - 50vw);overflow:hidden;border-block:1px solid rgba(255,255,255,.12);padding:1rem 0;background:#171713}.portfolio-technology-track{display:flex;width:max-content;animation:portfolio-technology-scroll 24s linear infinite;will-change:transform}.portfolio-technology-group{display:flex;width:max-content;min-width:100vw;flex-shrink:0;align-items:center;justify-content:space-around;gap:2rem;padding:0 1rem}.portfolio-technology-item{display:inline-flex;flex-shrink:0;align-items:center;gap:2rem;color:rgba(255,255,255,.7);font-size:.75rem;font-weight:600}.portfolio-technology-item i{width:.3rem;height:.3rem;flex-shrink:0;border-radius:50%;background:#f0c94b}@keyframes portfolio-technology-scroll{0%{transform:translateZ(0)}to{transform:translate3d(-50%,0,0)}}@media (prefers-reduced-motion:reduce){.portfolio-technology-track{animation-play-state:paused}.portfolio-name-flip{animation:none}}.portfolio-project:hover{border-color:#f0c94b;background:#272720;transform:translateY(-.4rem) rotate(-.35deg)}.portfolio-work-kicker{display:inline-block;width:fit-content;border-radius:.2rem;padding:.35rem .55rem;background:#f0c94b;color:#171713;transform:rotate(-1.5deg)}.portfolio-work-title{text-wrap:balance}.portfolio-project-summary{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;margin-top:.7rem;font-size:.78rem;line-height:1.55}.portfolio-project-content{padding-top:2rem}.portfolio-project-title{font-size:clamp(1rem,2.6vw,1.22rem);line-height:1.25}.portfolio-project-tags{gap:.4rem;margin-top:1rem}.portfolio-project-tags span{padding:.28rem .55rem;font-size:.68rem}.portfolio-project-link{margin-top:1.05rem;font-size:.72rem}.portfolio-project-dots{display:flex;min-height:2.25rem;align-items:end;justify-content:center;gap:.45rem}.portfolio-project-dots button{width:.4rem;height:.4rem;flex:0 0 auto;border:0;border-radius:999px;padding:0;background:rgba(255,255,255,.32);transition:width .16s ease,background-color .16s ease}.portfolio-project-dots button.is-active,.portfolio-project-dots button[aria-current=true]{width:1.15rem;background:#ffffff!important}.portfolio-page .portfolio-work-link{color:#f0c94b!important;text-decoration:none!important;transition:color .16s ease}.portfolio-page .portfolio-work-link:focus-visible,.portfolio-page .portfolio-work-link:hover{color:#ffffff!important}.portfolio-publication-kicker{display:inline-block;width:fit-content;border-radius:.2rem;padding:.35rem .55rem;background:#5e60ad;color:#ffffff;transform:rotate(-1.2deg)}.portfolio-publication-all,.portfolio-publication-link{color:#5e60ad!important;text-decoration:none!important;transition:color .16s ease}.portfolio-publication-all:focus-visible,.portfolio-publication-all:hover,.portfolio-publication-link:focus-visible,.portfolio-publication-link:hover{color:#171713!important}.portfolio-publication-grid{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(16rem,86%);gap:.85rem;overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain;padding:.3rem .3rem 2.5rem;scroll-behavior:smooth;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}.portfolio-publication-grid::-webkit-scrollbar{display:none}.portfolio-publication-card{display:flex;overflow:hidden;isolation:isolate;min-height:16rem;flex-direction:column;border:1px solid rgba(23,23,19,.1);border-radius:.5rem;background:#ffffff;padding:1.1rem;box-shadow:.45rem .45rem 0 #dedff5,0 1rem 2.5rem rgba(23,23,19,.07);scroll-snap-align:start;scroll-snap-stop:always;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.portfolio-publication-card:hover{border-color:rgba(94,96,173,.38);box-shadow:.55rem .55rem 0 #dedff5,0 1.2rem 2.6rem rgba(23,23,19,.08);transform:translate(-.18rem,-.18rem) rotate(-.25deg)}.portfolio-publication-summary{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;margin-top:.7rem;font-size:.78rem;line-height:1.55}.portfolio-publication-content{margin-top:1rem}.portfolio-publication-title{font-size:clamp(1rem,2.4vw,1.16rem);line-height:1.3}.portfolio-publication-title a{color:#171713;text-decoration:none;transition:color .16s ease}.portfolio-publication-title a:focus-visible,.portfolio-publication-title a:hover{color:#5e60ad;text-decoration:underline;text-underline-offset:.18em}.portfolio-publication-summary-link{display:block;color:inherit;text-decoration:none}.portfolio-publication-summary-link:focus-visible .portfolio-publication-summary,.portfolio-publication-summary-link:hover .portfolio-publication-summary{color:rgba(23,23,19,.82)!important}.portfolio-publication-tags{gap:.4rem;margin-top:1rem}.portfolio-publication-tags span{padding:.28rem .55rem;font-size:.5rem}.portfolio-publication-tags .portfolio-publication-tag-more{border:1px dashed rgba(23,23,19,.2);border-radius:999px;padding:.28rem .55rem;color:rgba(23,23,19,.45);font-size:.68rem}.portfolio-publication-footer{padding-top:1.25rem}.portfolio-publication-link{font-size:.72rem}.portfolio-publication-dots{display:flex;min-height:2rem;align-items:end;justify-content:center;gap:.45rem}.portfolio-publication-dots button{width:.4rem;height:.4rem;flex:0 0 auto;border:0;border-radius:999px;padding:0;background:rgba(94,96,173,.28);transition:width .16s ease,background-color .16s ease}.portfolio-publication-dots button.is-active,.portfolio-publication-dots button[aria-current=true]{width:1.15rem;background:#5e60ad}.portfolio-publication-empty{border:1px dashed rgba(23,23,19,.18);border-radius:.5rem;padding:3rem 1.25rem;text-align:center;color:rgba(23,23,19,.55);font-size:.875rem}@media (max-width:1023px){.portfolio-project-grid{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:100%;width:100%;min-width:0;gap:.75rem;justify-content:start;overflow-x:auto!important;overflow-y:hidden;overscroll-behavior-inline:contain;scroll-behavior:smooth;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}.portfolio-project-grid::-webkit-scrollbar{display:none}.portfolio-project-grid>article{width:100%;min-width:0;scroll-snap-align:start;scroll-snap-stop:always}}@media (min-width:640px) and (max-width:1023px){.portfolio-about-grid{width:min(calc(100% - 4rem),38rem)}}@media (min-width:1024px){.portfolio-about-intro{grid-template-columns:.6fr 1.4fr;gap:4rem}.portfolio-about-work{margin-top:2rem;padding-top:1rem}.portfolio-about-label{margin-bottom:1rem}.portfolio-about-grid{width:min(calc(100% - 6rem),48rem);height:13.5rem}.portfolio-about-copy{max-width:56rem;padding-left:1.5rem;font-size:1.125rem;line-height:1.65}.portfolio-about-title{padding:.75rem 1.05rem;font-size:2rem}.portfolio-about-card{height:13.5rem;min-height:10.5rem;padding:1.35rem}.portfolio-about-work-with-wrap{padding-bottom:0}.portfolio-about-card-wrapper{margin-bottom:0}.portfolio-about-card:hover{border-color:rgba(94,96,173,.5);box-shadow:.55rem .55rem 0 #e3e3dc;transform:translate(-.2rem,-.2rem) rotate(-.4deg)}.portfolio-project-grid{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-flow:row;grid-auto-columns:auto;gap:1rem;overflow:hidden}.portfolio-project-dots{display:none}.portfolio-project{min-height:19.5rem;padding:1.35rem 1.35rem 2.5rem}.portfolio-publication-grid{grid-auto-columns:minmax(17rem,calc((100% - 2rem) / 3))}.portfolio-publication-card{min-height:17rem;padding:1.2rem}}.portfolio-contact-link{display:flex;min-width:0;align-items:center;gap:.65rem;min-height:3.5rem;padding:.7rem 0;color:white;text-decoration:none}.portfolio-footer-games-link{align-items:center;gap:.7rem;margin-top:2.25rem;color:white;text-decoration:none}.portfolio-footer-games-link:hover{color:#f0c94b}.portfolio-footer-games-icon{display:grid;width:2.4rem;height:2.4rem;place-items:center;border:1px solid rgba(255,255,255,.3);border-radius:.45rem}.portfolio-footer-games-link>span:nth-child(2){display:grid;gap:.15rem;font-size:.78rem;font-weight:700}.portfolio-footer-games-link small{color:rgba(255,255,255,.58);font-size:.61rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.portfolio-footer-games-link>svg{margin-left:.15rem;opacity:.72;transition:transform .16s ease}.portfolio-footer-games-link:hover>svg{transform:translate(.16rem,-.16rem)}.portfolio-contact-link+.portfolio-contact-link{border-top:1px solid rgba(255,255,255,.2)}.portfolio-contact-icon{display:inline-flex;height:2rem;width:2rem;flex:0 0 auto;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.28);border-radius:.375rem;transition:background-color .16s ease,color .16s ease}a.portfolio-contact-link:hover{color:white}a.portfolio-contact-link:hover .portfolio-contact-icon{background:white;color:#5e60ad}@media (min-width:1024px){.portfolio-contact-link{gap:.85rem;min-height:0;padding:1rem 0}.portfolio-contact-icon{height:2.5rem;width:2.5rem}.portfolio-contact-link+.portfolio-contact-link{border-top:1px solid rgba(255,255,255,.2)}}@media (min-width:768px){.portfolio-mobile-nav{display:none}}@media (max-width:639px){.portfolio-hero{min-height:620px;align-items:flex-start;padding-top:0}.portfolio-hero-media{bottom:auto;height:21rem}.portfolio-hero-photo{object-position:57% 52%}.portfolio-hero-overlay{width:100%;height:24rem;background:linear-gradient(180deg,rgba(247,247,244,.06),rgba(247,247,244,.12) 42%,rgba(247,247,244,.78) 74%,#f7f7f4)}.portfolio-primary-action,.portfolio-secondary-action{min-height:2.5rem;padding:.55rem .8rem;font-size:.75rem}}