:root{color-scheme:light;--surface-color: #ffffff;--text-color: #595959;--text-muted-color: rgba(0, 0, 0, .65);--text-subtle-color: rgba(0, 0, 0, .44);--border-color: #595959;--toast-shadow-color: rgba(0, 0, 0, .1);--scrollbar-color: rgba(0, 0, 0, .15);--scrollbar-hover-color: rgba(0, 0, 0, .3)}:root[data-theme=night]{color-scheme:dark;--surface-color: #121212;--text-color: #d8d2c8;--text-muted-color: rgba(236, 232, 224, .72);--text-subtle-color: rgba(236, 232, 224, .5);--border-color: #d8d2c8;--toast-shadow-color: rgba(0, 0, 0, .35);--scrollbar-color: rgba(236, 232, 224, .22);--scrollbar-hover-color: rgba(236, 232, 224, .42)}body,html{margin:0;padding:0;width:100%;height:100%;overflow:hidden;background:var(--surface-color)}#app{width:100%;height:100%;margin:0;padding:0;max-width:none}.ascii-window[data-v-34c82026]{position:absolute;background:var(--surface-color);color:var(--text-muted-color);font:var(--window-font-size, 13px)/1 "Courier New",Courier,monospace;box-shadow:9px 9px color-mix(in srgb,var(--text-color) 8%,transparent);isolation:isolate}.window-frame[data-v-34c82026]{position:absolute;inset:0;margin:0;overflow:hidden;color:var(--text-muted-color);font:inherit;white-space:pre;pointer-events:none;-webkit-user-select:none;user-select:none;transition:color .18s}.is-active .window-frame[data-v-34c82026]{color:var(--text-muted-color)}.window-titlebar[data-v-34c82026]{position:absolute;top:calc(var(--row-height) * .5);left:19px;right:18px;height:calc(var(--row-height) * 3);display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:default;-webkit-user-select:none;user-select:none}.can-drag:not(.is-maximized) .window-titlebar[data-v-34c82026]{cursor:grab;touch-action:none}.is-dragging .window-titlebar[data-v-34c82026],.is-dragging .window-title[data-v-34c82026]{cursor:grabbing}button[data-v-34c82026]{padding:4px 0;border:0;background:transparent;color:inherit;font:inherit;cursor:pointer}button[data-v-34c82026]:focus-visible,.window-scroll[data-v-34c82026]:focus-visible{outline:1px dashed var(--text-color);outline-offset:3px}.window-title[data-v-34c82026]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;color:var(--text-muted-color);cursor:inherit}.window-title span[data-v-34c82026]{margin-right:6px}.is-active .window-title[data-v-34c82026]{color:var(--text-muted-color)}.window-controls[data-v-34c82026]{display:flex;flex-shrink:0;gap:12px}.window-controls button[data-v-34c82026]:hover{background:var(--text-color);color:var(--surface-color)}.window-scroll[data-v-34c82026]{position:absolute;top:calc(var(--row-height) * 3.5 + 6px);bottom:calc(var(--row-height) * 2.5 + 6px);left:13px;right:13px;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:thin;scrollbar-color:var(--scrollbar-color) transparent;scrollbar-gutter:stable}.window-content[data-v-34c82026]{padding:16px 20px 28px}.window-footer[data-v-34c82026]{position:absolute;bottom:calc(var(--row-height) * .5);left:25px;right:25px;height:calc(var(--row-height) * 2);display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--text-muted-color)}.scroll-hint[data-v-34c82026]{margin-left:auto}@media(prefers-reduced-motion:reduce){.window-frame[data-v-34c82026]{transition:none}}@media(pointer:coarse){.window-controls button[data-v-34c82026]{min-width:44px;min-height:44px}button.window-title[data-v-34c82026]{min-height:44px}}.project-categories[data-v-b189704c]{width:100%;height:100%;min-width:0;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:currentColor transparent;color:inherit;font:inherit;pointer-events:none}.category-options[data-v-b189704c]{display:grid;box-sizing:border-box;width:100%;min-height:100%;padding:8px;align-content:center;justify-items:end;gap:clamp(8px,2.5vh,24px)}.project-category-choice[data-v-b189704c]{box-sizing:border-box;width:max-content;max-width:100%;min-width:44px;min-height:44px;padding:8px;border:0;border-radius:0;background:transparent;color:inherit;font:inherit;letter-spacing:inherit;text-align:right;cursor:pointer;pointer-events:auto;touch-action:manipulation;white-space:pre}.project-category-choice[data-v-b189704c]:disabled{cursor:default}.project-category-choice:not(:disabled):hover .category-label[data-v-b189704c]{text-decoration:underline;text-underline-offset:4px}.project-category-choice[data-v-b189704c]:focus-visible{outline:1px dashed currentColor;outline-offset:3px}@media(max-height:540px){.category-options[data-v-b189704c]{gap:4px}}.pixel-image[data-v-9f8d4741]{position:relative;overflow:hidden;background:color-mix(in srgb,var(--text-color) 6%,var(--surface-color));filter:saturate(var(--image-reveal, 0))}img[data-v-9f8d4741],canvas[data-v-9f8d4741]{position:absolute;inset:0;width:100%;height:100%}img[data-v-9f8d4741]{object-fit:cover}canvas[data-v-9f8d4741]{opacity:0;image-rendering:pixelated}.is-ready canvas[data-v-9f8d4741]{opacity:1}.is-ready img[data-v-9f8d4741]{opacity:0}.image-fallback[data-v-9f8d4741]{position:absolute;inset:0;display:grid;place-content:center;padding:24px;text-align:center;background:var(--surface-color)}.project-video[data-v-8ce0f427]{position:relative;overflow:hidden;background:color-mix(in srgb,var(--text-color) 6%,var(--surface-color))}.video-cover[data-v-8ce0f427],video[data-v-8ce0f427]{position:absolute;inset:0;width:100%;height:100%}video[data-v-8ce0f427]{display:block;object-fit:contain;opacity:0;pointer-events:none;transition:opacity .25s ease}.is-revealed video[data-v-8ce0f427]{opacity:1;pointer-events:auto}.video-fallback[data-v-8ce0f427]{position:absolute;inset:0;display:grid;place-content:center;padding:24px;color:inherit;font:inherit;background:var(--surface-color)}@media(prefers-reduced-motion:reduce){video[data-v-8ce0f427]{transition:none}}.project-rive[data-v-e1b1db56]{position:relative;width:100%;overflow:hidden;max-height:min(440px,45dvh);background:color-mix(in srgb,var(--text-color) 6%,var(--surface-color))}.rive-cover[data-v-e1b1db56],.rive-surface[data-v-e1b1db56]{position:absolute;inset:0;width:100%;height:100%}.rive-surface[data-v-e1b1db56]{display:block;opacity:0;pointer-events:none;transition:opacity .25s ease}.is-revealed .rive-surface[data-v-e1b1db56]{opacity:1;pointer-events:auto}.rive-surface[data-v-e1b1db56]:focus-visible{outline:1px dashed var(--text-color);outline-offset:-4px}.motion-start[data-v-e1b1db56],.rive-fallback[data-v-e1b1db56]{position:absolute;left:50%;bottom:16px;transform:translate(-50%);padding:10px 14px;border:0;color:var(--text-muted-color);background:var(--surface-color);font:inherit;text-decoration:none;cursor:pointer}.motion-start[data-v-e1b1db56]:focus-visible,.rive-fallback[data-v-e1b1db56]:focus-visible{outline:1px dashed var(--text-color);outline-offset:4px}@media(prefers-reduced-motion:reduce){.rive-surface[data-v-e1b1db56]{transition:none}}.project-embed[data-v-f0631b9c]{position:relative;overflow:hidden;width:100%;background:#000}.embed-cover[data-v-f0631b9c]{width:100%;height:100%;background:#000}.embed-play[data-v-f0631b9c]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);min-height:44px;padding:10px 16px;border:0;background:var(--surface-color);color:var(--text-muted-color);font:inherit;cursor:pointer}.embed-play[data-v-f0631b9c]:hover{text-decoration:underline;text-underline-offset:4px}.embed-play[data-v-f0631b9c]:focus-visible{outline:1px dashed currentColor;outline-offset:-4px}iframe[data-v-f0631b9c]{position:absolute;inset:0;width:100%;height:100%;border:0}.project-music[data-v-c2948063]{margin:0 0 2em}.music-selection[data-v-c2948063]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:center;gap:clamp(8px,1.5vw,24px)}.music-tracks[data-v-c2948063]{display:grid;gap:4px;min-width:0}.music-track[data-v-c2948063]{display:grid;grid-template-columns:1ch minmax(0,1fr) auto;align-items:center;gap:6px;min-height:44px;min-width:0;padding:6px 0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;text-decoration:none;cursor:pointer}.track-marker[data-v-c2948063]{text-align:center}.track-name[data-v-c2948063]{min-width:0;overflow-wrap:anywhere}.track-duration[data-v-c2948063]{flex:none}.music-track[data-v-c2948063]:hover,.music-track.is-selected[data-v-c2948063]{color:var(--text-color)}.music-track[data-v-c2948063]:focus-visible,.music-fallback[data-v-c2948063]:focus-visible{outline:1px dashed currentColor;outline-offset:3px}.music-player[data-v-c2948063]{display:block;width:100%;height:40px;margin-top:24px;color-scheme:light}[data-theme=night]{color-scheme:dark}.music-fallback[data-v-c2948063]{display:inline-block;margin-top:1em;color:inherit;text-decoration:none}.project-deck[data-v-3eccf6cf]{position:absolute;top:clamp(76px,11vh,132px);right:clamp(24px,3vw,70px);width:min(720px,48vw);height:min(760px,calc(100dvh - 150px));z-index:15;display:flex;flex-direction:column;gap:20px;color:var(--text-muted-color);font:var(--window-font-size, 13px)/1 "Courier New",Courier,monospace;pointer-events:none}.window-stack[data-v-3eccf6cf]{position:relative;flex:1;min-height:0}.project-deck.is-left[data-v-3eccf6cf]{left:clamp(24px,3vw,70px);right:auto;top:clamp(112px,15vh,160px);height:min(760px,calc(100dvh - 184px))}.ascii-window[data-v-3eccf6cf]{top:calc(var(--window-top) + var(--drag-y, 0px));left:calc(var(--window-left) + var(--drag-x, 0px));width:var(--window-width);height:var(--window-height);pointer-events:auto;transition:width .3s ease,height .3s ease}.ascii-window.is-dragging[data-v-3eccf6cf]{transition:none}.ascii-window.is-maximized[data-v-3eccf6cf]{inset:0;width:100%;height:100%}.project-summary[data-v-3eccf6cf]{margin:0 0 2em}figure[data-v-3eccf6cf]{margin:0 0 22px}figcaption[data-v-3eccf6cf]{margin-top:1em}.caption-before[data-v-3eccf6cf]{margin:0 0 1em}.project-image-row[data-v-3eccf6cf]{display:flex;align-items:flex-start;gap:clamp(8px,1vw,12px);width:100%;max-width:440px;margin:0 auto 2em}.project-image-row figure[data-v-3eccf6cf]{flex:1 1 0;min-width:0;margin:0}.has-centered-captions figcaption[data-v-3eccf6cf]{text-align:center}.project-description p[data-v-3eccf6cf]{margin:0 0 2em}.project-section+.project-section[data-v-3eccf6cf]{margin-top:3em}.project-section-title[data-v-3eccf6cf]{margin:0 0 1.5em;font:inherit}.project-stack[data-v-3eccf6cf]{margin:2em 0 1em}.project-links[data-v-3eccf6cf]{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:10px 20px}a[data-v-3eccf6cf],button[data-v-3eccf6cf]{font:inherit;color:inherit;cursor:pointer}a[data-v-3eccf6cf]{text-decoration:none}button[data-v-3eccf6cf]{border:0;padding:0;background:transparent}a[data-v-3eccf6cf]:hover,button[data-v-3eccf6cf]:hover{text-decoration:underline;text-underline-offset:4px}a[data-v-3eccf6cf]:focus-visible,button[data-v-3eccf6cf]:focus-visible{outline:1px dashed var(--text-color);outline-offset:4px}.undo-button[data-v-3eccf6cf]{position:absolute;top:-34px;right:0;padding:6px;background:var(--surface-color);pointer-events:auto}.copy-message[data-v-3eccf6cf]{overflow-wrap:anywhere;-webkit-user-select:text;user-select:text}.detail-image[data-v-3eccf6cf]{margin-top:30px}.deck-empty[data-v-3eccf6cf]{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;pointer-events:none}.deck-empty pre[data-v-3eccf6cf]{margin:0;padding:4px;font:inherit;white-space:pre;background:var(--surface-color)}.read-again[data-v-3eccf6cf]{padding:12px;background:var(--surface-color);pointer-events:auto}.sr-only[data-v-3eccf6cf]{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media(min-width:1800px){.project-deck[data-v-3eccf6cf]{right:7vw}}@media(min-width:1800px){.project-deck.is-left[data-v-3eccf6cf]{left:7vw;right:auto}}@media(min-width:768px)and (max-width:1023px){.project-deck[data-v-3eccf6cf]{width:49vw;right:18px}}@media(min-width:768px)and (max-width:1023px){.project-deck.is-left[data-v-3eccf6cf]{left:18px;right:auto}}@media(max-height:540px){.project-deck[data-v-3eccf6cf]{top:56px;height:calc(100dvh - 84px);gap:6px}}@media(max-height:540px){.project-deck.is-left[data-v-3eccf6cf]{top:100px;height:calc(100dvh - 128px)}}@media(prefers-reduced-motion:reduce){.ascii-window[data-v-3eccf6cf]{transition:none}}@media(pointer:coarse){.project-links a[data-v-3eccf6cf],.project-links button[data-v-3eccf6cf],.read-again[data-v-3eccf6cf],.undo-button[data-v-3eccf6cf]{min-height:44px;display:inline-flex;align-items:center}}.projects-page[data-v-89bcc9a4],.projects-stage[data-v-89bcc9a4]{position:absolute;inset:0;pointer-events:none}.projects-page[data-v-89bcc9a4]{z-index:15;color:var(--text-muted-color);font:var(--window-font-size)/1 "Courier New",Courier,monospace}.category-space[data-v-89bcc9a4]{position:absolute;top:clamp(76px,11vh,132px);right:clamp(24px,3vw,70px);width:min(720px,48vw);height:min(760px,calc(100dvh - 150px))}.empty-window[data-v-89bcc9a4]{top:calc(20% + var(--drag-y, 0px));left:var(--drag-x, 0px);width:100%;height:min(280px,75%);pointer-events:auto;text-align:right}.empty-window p[data-v-89bcc9a4]{margin:0}@media(min-width:1800px){.category-space[data-v-89bcc9a4]{right:7vw}}@media(min-width:768px)and (max-width:1023px){.category-space[data-v-89bcc9a4]{width:49vw;right:18px}}@media(max-height:540px){.category-space[data-v-89bcc9a4]{top:56px;height:calc(100dvh - 84px)}.empty-window[data-v-89bcc9a4]{top:var(--drag-y, 0px);height:min(240px,100%)}}.about-panel[data-v-37b115c4]{position:absolute;top:clamp(90px,15vh,160px);right:clamp(24px,3vw,70px);width:min(720px,48vw);height:min(650px,calc(100dvh - 180px));z-index:15;color:var(--text-muted-color);font:var(--window-font-size, 13px)/1 "Courier New",Courier,monospace;pointer-events:none}.ascii-window[data-v-37b115c4]{inset:0;pointer-events:auto}.about-art[data-v-37b115c4]{margin:0 0 28px;font:clamp(4px,.6vw,10px)/1 "Courier New",Courier,monospace;white-space:pre}h2[data-v-37b115c4]{margin:0 0 1em;font:inherit}p[data-v-37b115c4]{margin:0 0 1em}.about-copy section+section[data-v-37b115c4]{margin-top:2em}.about-badges[data-v-37b115c4]{display:flex;flex-wrap:wrap;gap:6px 4px;align-items:center}.about-badges img[data-v-37b115c4]{display:block;height:max(14px,var(--window-font-size));max-width:100%}.about-socials a[data-v-37b115c4],.about-socials button[data-v-37b115c4]{display:inline-flex;align-items:center;border:0;padding:0;background:none;color:inherit;cursor:pointer}.about-socials a[data-v-37b115c4]:hover,.about-socials button[data-v-37b115c4]:hover{opacity:.7}.about-socials a[data-v-37b115c4]:focus-visible,.about-socials button[data-v-37b115c4]:focus-visible{outline:1px dashed var(--text-color);outline-offset:4px}.copy-message[data-v-37b115c4]{margin-top:1em;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text}@media(min-width:1800px){.about-panel[data-v-37b115c4]{right:7vw}}@media(min-width:768px)and (max-width:1023px){.about-panel[data-v-37b115c4]{width:49vw;right:18px}}@media(max-height:540px){.about-panel[data-v-37b115c4]{top:76px;height:calc(100dvh - 108px)}}@media(pointer:coarse){.about-socials a[data-v-37b115c4],.about-socials button[data-v-37b115c4]{min-height:44px}}.experience-page[data-v-ad701c24],.experience-stage[data-v-ad701c24]{position:absolute;inset:0;pointer-events:none}.experience-page[data-v-ad701c24]{z-index:15}.experience-overview[data-v-ad701c24]{position:absolute;left:120px;top:64.5%;transform:translateY(-50%);width:max-content;max-width:calc(50vw - 36px);max-height:calc(100dvh - 160px);overflow-y:auto;pointer-events:auto;color:var(--text-muted-color);font:var(--experience-font-size)/1 "Courier New",Courier,monospace}.experience-art[data-v-ad701c24]{width:max-content;margin:0 0 1em;font:var(--experience-art-size)/1 "Courier New",Courier,monospace;white-space:pre}.experience-role+.experience-role[data-v-ad701c24]{margin-top:2em}.role-line[data-v-ad701c24]{width:fit-content}h2[data-v-ad701c24],p[data-v-ad701c24]{margin:0;font:inherit}.role-period[data-v-ad701c24],.role-description[data-v-ad701c24]{margin-top:1em;width:fit-content}.role-projects[data-v-ad701c24]{display:block;width:fit-content;margin-top:1.5em;padding:0;border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;white-space:nowrap}.role-projects[data-v-ad701c24]:hover{text-decoration:underline;text-underline-offset:4px}.role-projects[data-v-ad701c24]:focus-visible{outline:1px dashed var(--text-color);outline-offset:4px}@media(min-width:768px)and (max-width:1023px){.experience-overview[data-v-ad701c24]{left:40px}}@media(max-height:540px){.experience-overview[data-v-ad701c24]{top:56%}}@media(pointer:coarse){.role-projects[data-v-ad701c24]{min-height:44px}}.scene-container[data-v-b01e97a2]{width:100vw;height:100vh;margin:0;padding:0;overflow:hidden;position:absolute;top:0;left:0;background-color:var(--surface-color);transition:background-color .35s ease}canvas[data-v-b01e97a2]{display:block;z-index:20;position:relative}.has-window-page>canvas[data-v-b01e97a2]{pointer-events:none}.ascii-overlay[data-v-b01e97a2]{position:absolute;top:0;left:0;width:100vw;height:100vh;pointer-events:none;overflow:hidden;z-index:10}.dynamic-layout[data-v-b01e97a2]{position:absolute;top:0;left:0;width:100vw;height:100vh;z-index:25;pointer-events:none}.wechat-badge[data-v-b01e97a2]{position:absolute;left:50%;bottom:max(124px,env(safe-area-inset-bottom,0px) + 60px);transform:translate(-50%);z-index:40;display:inline-flex;flex-direction:column;align-items:center;gap:12px;padding:0;border:0;background:transparent;color:var(--text-color);font-family:Courier New,Courier,monospace;font-size:15px;letter-spacing:.08em;cursor:pointer;pointer-events:auto}.wechat-badge img[data-v-b01e97a2]{display:block;height:38px}.wechat-badge span[data-v-b01e97a2]{white-space:nowrap}.theme-toggle[data-v-b01e97a2]{position:absolute;left:38px;bottom:max(34px,env(safe-area-inset-bottom,0px) + 24px);z-index:120;width:44px;height:44px;display:grid;place-items:center;padding:0;border:0;background:var(--surface-color);box-shadow:3px 3px color-mix(in srgb,var(--text-color) 8%,transparent);color:var(--text-color);font-family:Courier New,Courier,monospace;font-size:22px;line-height:1;cursor:pointer;pointer-events:auto;-webkit-user-select:none;user-select:none;transition:background-color .35s ease,color .35s ease}.theme-toggle-frame[data-v-b01e97a2],.theme-toggle-icon[data-v-b01e97a2]{grid-area:1 / 1;pointer-events:none}.theme-toggle-frame[data-v-b01e97a2]{color:var(--text-muted-color);font:13px/14px Courier New,Courier,monospace;white-space:pre;transition:color .35s ease}.theme-toggle-icon[data-v-b01e97a2]{transition:opacity .2s ease}.theme-toggle:hover .theme-toggle-icon[data-v-b01e97a2]{opacity:.62}.theme-toggle[data-v-b01e97a2]:focus-visible{outline:1px dashed var(--text-color);outline-offset:4px}.theme-toggle[inert][data-v-b01e97a2]{pointer-events:none}.back-btn[data-v-b01e97a2],.nav-container[data-v-b01e97a2]{font-family:Courier New,Courier,monospace;font-size:16px;color:var(--text-color);letter-spacing:1px;-webkit-user-select:none;user-select:none;transition:color .35s ease,opacity .2s ease}.back-btn[data-v-b01e97a2]{position:absolute;top:40px;left:40px;z-index:100;padding:0;border:0;background:transparent;cursor:pointer;pointer-events:auto;white-space:pre;transition:opacity .2s ease}.back-btn[data-v-b01e97a2]:hover{opacity:.6}.nav-container[data-v-b01e97a2]{position:absolute;bottom:60px;display:flex;justify-content:space-between;z-index:30;pointer-events:auto}.nav-container button[data-v-b01e97a2]{padding:0;border:0;background:transparent;color:inherit;font:inherit;letter-spacing:inherit;cursor:pointer;transition:opacity .2s ease}.nav-container button[data-v-b01e97a2]:hover{opacity:.6}.back-btn[data-v-b01e97a2]:disabled,.nav-container button[data-v-b01e97a2]:disabled{color:inherit;cursor:default}.back-btn.is-disabled[data-v-b01e97a2],.nav-container.is-disabled[data-v-b01e97a2]{pointer-events:none}@media(max-width:767px){.back-btn[data-v-b01e97a2],.nav-container[data-v-b01e97a2],.dynamic-layout[data-v-b01e97a2]{display:none!important}.theme-toggle[data-v-b01e97a2]{left:20px;bottom:max(22px,env(safe-area-inset-bottom,0px) + 18px)}}
