@font-face{font-family:MiSans Project;src:url(/assets/misans-regular-BCdzICih.woff) format("woff");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:MiSans Project;src:url(/assets/misans-demibold-CPPFgTZy.woff) format("woff");font-style:normal;font-weight:600;font-display:swap}*{box-sizing:border-box}html,body{height:100%;overflow:hidden}body{margin:0;min-width:320px}.brand-home{position:fixed;z-index:4;top:28px;left:50%;transform:translate(-50%);display:grid;place-items:center;width:32px;height:32px;padding:0;background:transparent}.brand-home img{display:block;width:100%;height:100%}.brand-home:focus-visible{outline:2px solid #818181;outline-offset:5px}.portfolio{--card-width: min(236px, calc((100vw - 180px) / 5.5));position:relative;display:flex;align-items:flex-start;width:100%;height:100svh;padding:calc(50svh - var(--dock-rest-height, 240px) / 2) 48px 56px;overflow:hidden;scrollbar-width:none;scroll-snap-type:x proximity;scroll-padding-inline:48px}.portfolio-heading{position:fixed;top:max(18px,calc(50svh - var(--dock-rest-height, 240px) / 2 - 160px));inset-inline:24px;text-align:center}.portfolio-heading h1{margin:0;font-size:28px;font-weight:600;line-height:1.3;letter-spacing:-.04em}.portfolio-heading p{margin:10px 0 0;font-size:12px;line-height:1.6;color:#8a8a8a}.project-tabs{position:relative;display:inline-flex;gap:4px;margin-top:18px;padding:3px;border-radius:13px;background:#ffffff73}.project-tabs__indicator{position:absolute;z-index:0;top:3px;bottom:3px;left:0;width:var(--tab-indicator-width, 0px);border-radius:10px;background:var(--brand-color);pointer-events:none;transform:translate3d(var(--tab-indicator-x, 0px),0,0)}.project-tabs.is-ready .project-tabs__indicator{transition:transform .38s cubic-bezier(.22,1,.36,1),width .38s cubic-bezier(.22,1,.36,1)}.project-tabs button{position:relative;z-index:1;padding:6px 16px;border:0;border-radius:10px;background:transparent;color:#888;font:inherit;font-size:12px;line-height:18px;cursor:pointer;-webkit-tap-highlight-color:transparent}.project-tabs button[aria-selected=true]{color:#1d1d1d}.project-tabs button:hover{color:#222}.project-tabs button:focus-visible{outline:2px solid #818181;outline-offset:4px}.projects.is-transitioning{pointer-events:none}.projects.is-transitioning .project-slot{will-change:transform}.portfolio.is-switching{overflow:hidden;scroll-snap-type:none}.projects{--dock-rest-height: 240px;display:flex;align-items:flex-start;gap:20px;width:max-content;height:var(--dock-rest-height);flex:0 0 auto;margin-inline:auto}.project-slot{position:relative;flex:0 0 var(--card-width);width:var(--card-width);height:var(--dock-rest-height);scroll-snap-align:start}.projects .project-card{padding:10px;transform-origin:50% calc(var(--dock-rest-height) / 2);transform:translate3d(var(--dock-shift, 0px),0,0) scale(var(--dock-scale, 1))}.projects.is-magnifying .project-card{will-change:transform}.projects .project-card__content{margin-top:14px;padding:6px}.projects .project-card__header{height:38px}.projects .project-card__title{font-size:14px;line-height:20px}.projects .project-card__subtitle{font-size:11px;line-height:14px}.projects .project-card__description{min-height:0;padding-top:16px;gap:16px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.noscript-message{font-size:14px;color:#7e7e7e}@media(max-width:960px){.portfolio{--card-width: 220px;padding-inline:calc((100vw - var(--card-width)) / 2);scroll-padding-inline:0;scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain}.projects{gap:24px}.project-slot{scroll-snap-align:center}}@media(max-width:540px){.portfolio{--card-width: min(236px, calc(100vw - 72px) );padding-inline:calc((100vw - var(--card-width)) / 2);scroll-padding-inline:0}.projects{gap:20px}.portfolio-heading h1{font-size:26px}.brand-home{top:20px;width:24px;height:24px}}@media(max-height:660px)and (min-width:961px){.portfolio{--card-width: min(196px, calc((100vw - 180px) / 5.5))}}@media(max-height:660px)and (max-width:960px){.portfolio{--card-width: min(196px, calc(100vw - 72px) )}}@media(max-height:660px){.portfolio-heading{top:64px}.portfolio-heading p{display:none}}@media(max-height:500px){.portfolio{padding-top:calc(50svh - var(--dock-rest-height, 154px) / 2 - 20px)}.brand-home{top:12px;width:24px;height:24px}.portfolio-heading{top:44px}.portfolio-heading h1,.portfolio-heading p{display:none}.project-tabs{margin-top:0;padding:2px}.project-tabs__indicator{top:2px;bottom:2px}.project-tabs button{padding:4px 14px;line-height:16px}.projects .project-card__cover{aspect-ratio:339 / 135}.projects .project-card__description{padding-top:8px;gap:8px;font-size:11px;line-height:14px}.projects .project-card__tag{padding:2px 6px}.projects .project-card__description p+p{display:none}}.portfolio::-webkit-scrollbar{display:none}@media(prefers-reduced-motion:reduce){.project-tabs.is-ready .project-tabs__indicator{transition:none}.projects .project-card{transform:none}}@font-face{font-family:MiSans Project;src:url(/assets/misans-regular-BCdzICih.woff) format("woff");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:MiSans Project;src:url(/assets/misans-demibold-CPPFgTZy.woff) format("woff");font-style:normal;font-weight:600;font-display:swap}:root{--brand-color: #06db0f;--page-background: #f2f2f2;--text-color: #000;--text-muted: #8a8a8a;--surface-color: #fff;--tab-surface-color: rgb(255 255 255 / 45%);--tab-radius: 13px;--tab-inner-radius: 10px;--motion-easing: cubic-bezier(.22, 1, .36, 1);color-scheme:light;background:var(--page-background);color:var(--text-color);font-family:MiSans Project,PingFang SC,Microsoft YaHei,sans-serif;font-synthesis:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.project-card{--card-easing: cubic-bezier(.22, 1, .36, 1);position:relative;box-sizing:border-box;flex:0 0 var(--card-width, 363px);width:var(--card-width, 363px);max-width:100%;padding:12px;border-radius:var(--card-smooth-radius, 38px);background:transparent;color:#000;font-family:MiSans Project,sans-serif;text-align:left;isolation:isolate}.project-card__surface,.project-card__surface-shadow,.project-card__cover-shadow{position:absolute;inset:0;pointer-events:none}.project-card__surface{z-index:-1}.project-card__surface-shadow{z-index:-2;filter:drop-shadow(0 0 0 rgb(0 0 0 / 8%));transition:filter .24s var(--card-easing)}.project-card__surface svg,.project-card__surface-shadow svg,.project-card__cover-shadow svg{display:block;width:100%;height:100%;overflow:visible}.project-card.is-expanded .project-card__surface-shadow{filter:drop-shadow(0 var(--card-shadow-y, 48px) var(--card-shadow-blur, 27.8px) rgb(0 0 0 / 8%));transition:filter .22s var(--card-easing) .54s}.project-card__inset{opacity:0;transition:opacity .18s ease}.project-card.is-expanded .project-card__surface .project-card__inset{opacity:1;transition:opacity .22s ease .54s}.project-card__cover{position:relative;width:100%;aspect-ratio:339 / 253;isolation:isolate}.project-card__cover-shadow{z-index:-1;filter:drop-shadow(0 0 0 rgb(0 0 0 / 10%));transition:filter .24s var(--card-easing)}.project-card__cover-inset{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.project-card.is-expanded .project-card__cover-shadow{filter:drop-shadow(0 var(--cover-shadow-y, 35px) var(--cover-shadow-blur, 25px) rgb(0 0 0 / 10%));transition:filter .26s var(--card-easing) .36s}.project-card.is-expanded .project-card__cover .project-card__inset{opacity:1;transition:opacity .26s ease .36s}.project-card__image{display:block;width:100%;height:100%;border-radius:0;object-fit:cover;-webkit-user-select:none;user-select:none}.project-card__content{position:relative;margin-top:18px;padding:8px}.project-card__header{position:relative;height:41px}.project-card__title{overflow:hidden;margin:0;color:#000;font-size:16px;font-weight:600;line-height:21px;letter-spacing:0;text-overflow:ellipsis;white-space:nowrap}.project-card__subtitle{overflow:hidden;margin:4px 0 0;color:#7e7e7e;font-size:12px;font-weight:400;line-height:16px;letter-spacing:0;text-overflow:ellipsis;white-space:nowrap}.project-card__disclosure{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .45s var(--card-easing),opacity .18s ease}.project-card.is-expanded .project-card__disclosure{grid-template-rows:1fr;opacity:1;transition:grid-template-rows .42s var(--card-easing),opacity .22s ease .18s}.project-card__disclosure-clip{min-height:0;overflow:hidden}.project-card__description{display:flex;box-sizing:content-box;flex-direction:column;gap:19px;min-height:133px;padding-top:18px;color:#7e7e7e;font-size:12px;font-weight:400;line-height:19px;letter-spacing:0}.project-card__description p{margin:0}.project-card__tags{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}.project-card__tag{padding:4px 7px;border-radius:6px;background:#f0f0f0;color:#626262;font-size:10px;font-weight:400;line-height:14px;white-space:nowrap}.project-card[data-coming-soon=true] .project-card__image{filter:grayscale(1)}.project-card__feedback{position:absolute;width:1px;height:1px;margin:0;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;pointer-events:none}.project-card.is-unavailable .project-card__subtitle{color:#b94436}.project-card__activation{position:absolute;z-index:2;inset:0;display:block;width:100%;height:100%;margin:0;padding:0;border:0;border-radius:inherit;background:transparent;color:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.project-card__activation:focus{outline:none}.project-card__activation:focus-visible{outline:2px solid #818181;outline-offset:5px}@media(prefers-reduced-motion:reduce){.project-card__surface-shadow,.project-card.is-expanded .project-card__surface-shadow,.project-card__inset,.project-card.is-expanded .project-card__surface .project-card__inset,.project-card.is-expanded .project-card__cover .project-card__inset,.project-card__cover-shadow,.project-card.is-expanded .project-card__cover-shadow,.project-card__disclosure,.project-card.is-expanded .project-card__disclosure{transition:none}}.site-access{--site-access-bottom: 24px;position:fixed;inset:auto 16px var(--site-access-bottom);z-index:10;display:flex;justify-content:center;color:#666;font-size:12px;line-height:1.5}.site-access__buttons{display:flex;align-items:center;justify-content:center;gap:8px}.site-access__button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-width:88px;height:38px;padding:10px 14px;border:1px solid transparent;border-radius:11px;background:#ffffff75;color:inherit;font:inherit;line-height:18px;text-decoration:none;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:color .18s ease,background .18s ease,border-color .18s ease}.site-access__button:hover,.site-access__button[aria-expanded=true]{color:#1d1d1d;background:var(--brand-color);border-color:var(--brand-color)}.site-access__button:focus-visible,.site-access__qr-link:focus-visible{outline:2px solid #818181;outline-offset:4px}.site-access__bilibili svg{width:15px;height:15px;fill:currentColor}.site-access__community{position:relative}.site-access__popover{position:absolute;bottom:calc(100% + 14px);left:50%;width:min(248px,calc(100vw - 32px));max-height:calc(100svh - var(--site-access-bottom) - 68px);padding:13px;transform:translate(-50%);border:1px solid rgb(0 0 0 / 3%);border-radius:20px;background:#fff;box-shadow:0 12px 40px #00000017;text-align:center}.site-access__popover:after{content:"";position:absolute;top:100%;left:0;width:100%;height:16px}.site-access__popover[hidden],.site-access__qr-link[hidden],.site-access__qr-status[hidden]{display:none}.site-access__qr-link{display:block;border-radius:4px}.site-access__qr{display:block;width:100%;height:auto;max-height:calc(100svh - var(--site-access-bottom) - 100px);object-fit:contain;background:#fff}.site-access__qr-status{margin:12px 0;color:#7e7e7e;font-size:12px;line-height:1.6}@media(max-width:540px){.site-access{--site-access-bottom: max(18px, env(safe-area-inset-bottom))}.site-access__buttons{gap:6px}.site-access__button{min-width:82px;padding-inline:12px}.site-access__popover{position:fixed;bottom:calc(var(--site-access-bottom) + 52px)}}@media(prefers-reduced-motion:reduce){.site-access__button{transition:none}}.resume-access-dialog{width:min(380px,calc(100vw - 32px));max-height:calc(100dvh - 32px);margin:auto;padding:30px;overflow:auto;border:0;border-radius:24px;background:#fff;color:#252525;box-shadow:0 24px 80px #00000024;font:inherit}.resume-access-dialog::backdrop{background:#19191938;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.resume-access-dialog__form{position:relative;margin:0}.resume-access-dialog h2{margin:0;padding-right:30px;font-size:22px;font-weight:600;line-height:1.4;letter-spacing:-.03em}.resume-access-dialog__description{margin:10px 0 26px;color:#8a8a8a;font-size:12px;line-height:1.7}.resume-access-dialog__close{position:absolute;top:-9px;right:-10px;display:grid;place-items:center;width:36px;height:36px;padding:0;border:0;border-radius:10px;background:transparent;color:#8a8a8a;font:inherit;font-size:25px;line-height:1;cursor:pointer}.resume-access-dialog__close:hover{background:#f3f3f3;color:#252525}.resume-access-dialog__label{display:block;margin-bottom:9px;font-size:12px;line-height:1.5}.resume-access-dialog__input{width:100%;height:48px;padding:12px 14px;border:1px solid #e8e8e8;border-radius:12px;outline:0;background:#f7f7f7;color:#252525;font:inherit;font-size:16px;line-height:22px}.resume-access-dialog__input::placeholder{color:#aaa;font-size:13px;letter-spacing:0}.resume-access-dialog__input:focus{border-color:#aaa;background:#fff;box-shadow:0 0 0 3px #0000000a}.resume-access-dialog__input[aria-invalid=true]{border-color:#bd5b51}.resume-access-dialog__input[readonly]{color:#888}.resume-access-dialog__error{margin:10px 0 0;color:#a54a40;font-size:12px;line-height:1.6}.resume-access-dialog__error[hidden]{display:none}.resume-access-dialog__actions{display:flex;justify-content:flex-end;gap:8px;margin-top:25px}.resume-access-dialog__actions button{min-width:84px;min-height:40px;padding:10px 16px;border:0;border-radius:11px;font:inherit;font-size:12px;line-height:20px;cursor:pointer}.resume-access-dialog__cancel{background:#f4f4f4;color:#666}.resume-access-dialog__cancel:hover{background:#eaeaea;color:#252525}.resume-access-dialog__submit{background:var(--brand-color, #00d609);color:#161616}.resume-access-dialog__submit:hover{filter:brightness(.96)}.resume-access-dialog__submit:disabled{cursor:wait;opacity:.65}.resume-access-dialog button:focus-visible{outline:2px solid #818181;outline-offset:3px}@media(max-width:540px){.resume-access-dialog{padding:26px 24px;border-radius:22px}.resume-access-dialog__actions button{min-height:44px}}@media(max-height:420px){.resume-access-dialog{padding-block:22px}.resume-access-dialog__description{margin-bottom:16px}.resume-access-dialog__actions{margin-top:18px}}
