:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;--navbar-height:64px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font:18px/145% var(--sans);letter-spacing:.18px;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root[data-theme=dark]{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (width<=1024px){:root{font-size:16px}}body{margin:0}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code{font-family:var(--mono);color:var(--text-h);background:var(--code-bg);border-radius:4px;padding:4px 8px;font-size:15px;line-height:135%;display:inline-flex}.theme-transition,.theme-transition *,.theme-transition :before,.theme-transition :after{transition:background-color .3s,color .3s,border-color .3s}.theme-toggle[data-v-5257079d]{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;padding:0;transition:border-color .5s,box-shadow .5s;display:inline-flex}.theme-toggle[data-v-5257079d]:hover{border-color:var(--accent-border);box-shadow:var(--shadow)}.theme-icon[data-v-5257079d]{color:var(--text-h);transition:color .5s}.rays[data-v-5257079d]{transform-origin:18px 18px;opacity:1;transition:transform .5s cubic-bezier(.4,0,.2,1),opacity .4s;transform:rotate(0)}.is-dark .rays[data-v-5257079d]{opacity:0;transform:rotate(90deg)}.ray[data-v-5257079d]{transition:transform .5s cubic-bezier(.4,0,.2,1);transform:scaleY(1)}.is-dark .ray[data-v-5257079d]{transform:scaleY(0)}.core[data-v-5257079d]{transform-origin:18px 18px;transition:transform .5s cubic-bezier(.4,0,.2,1);transform:scale(1)}.is-dark .core[data-v-5257079d]{transform:scale(1.57)}.navbar[data-v-0e99556b]{z-index:100;height:var(--navbar-height);border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg) 75%, transparent);-webkit-backdrop-filter:blur(10px);position:sticky;top:0}.navbar__inner[data-v-0e99556b]{justify-content:space-between;align-items:center;height:100%;padding:0 24px;display:flex}.navbar__logo[data-v-0e99556b]{font-family:var(--heading);color:var(--text-h);font-size:18px;font-weight:600;text-decoration:none}.navbar__nav[data-v-0e99556b]{align-items:center;gap:8px;display:flex}.navbar__link[data-v-0e99556b]{color:var(--text);border-radius:6px;padding:6px 12px;font-size:16px;text-decoration:none;transition:color .2s,background .2s}.navbar__link[data-v-0e99556b]:hover{color:var(--text-h);background:var(--accent-bg)}.navbar__link--active[data-v-0e99556b]{color:var(--accent);background:var(--accent-bg)}.navbar__burger[data-v-0e99556b]{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:8px;flex-direction:column;justify-content:center;gap:5px;width:36px;height:36px;padding:0 8px;display:none}.navbar__burger span[data-v-0e99556b]{background:var(--text-h);border-radius:1px;height:2px;transition:transform .25s,opacity .25s;display:block}.navbar__burger--open span[data-v-0e99556b]:first-child{transform:translateY(7px)rotate(45deg)}.navbar__burger--open span[data-v-0e99556b]:nth-child(2){opacity:0}.navbar__burger--open span[data-v-0e99556b]:nth-child(3){transform:translateY(-7px)rotate(-45deg)}@media (width<=768px){.navbar__burger[data-v-0e99556b]{display:inline-flex}.navbar__nav[data-v-0e99556b]{top:var(--navbar-height);border-bottom:1px solid var(--border);background:var(--bg);flex-direction:column;align-items:stretch;gap:4px;padding:12px 24px 16px;display:none;position:absolute;left:0;right:0}.navbar__nav--open[data-v-0e99556b]{display:flex}.navbar__link[data-v-0e99556b]{padding:10px 12px}}.footer[data-v-88beb65f]{border-top:1px solid var(--border);text-align:center;padding:32px 24px 40px}.footer__inner[data-v-88beb65f]{flex-direction:column;align-items:center;gap:12px;display:flex}.footer__social[data-v-88beb65f]{gap:12px;margin-bottom:4px;display:flex}.footer__social-link[data-v-88beb65f]{border:1px solid var(--border);width:36px;height:36px;color:var(--text);border-radius:8px;justify-content:center;align-items:center;transition:color .2s,border-color .2s,background .2s;display:flex}.footer__social-link svg[data-v-88beb65f]{width:18px;height:18px}.footer__social-link[data-v-88beb65f]:hover{color:var(--accent);border-color:var(--accent-border);background:var(--accent-bg)}.footer__copy[data-v-88beb65f]{color:var(--text);font-size:14px}.footer__built[data-v-88beb65f]{color:var(--text);opacity:.6;font-size:13px}.hero[data-v-760cd1b5]{min-height:calc(100svh - var(--navbar-height));flex-direction:column;justify-content:center;align-items:center;padding:0 24px;display:flex}.works[data-v-7f9e25e2]{max-width:1080px;margin:0 auto;padding:48px 24px 64px}.works__section+.works__section[data-v-7f9e25e2]{margin-top:48px}.works__section-title[data-v-7f9e25e2]{border-bottom:1px solid var(--border);margin-bottom:24px;padding-bottom:12px}.works__grid[data-v-7f9e25e2]{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:24px;margin:0;padding:0;list-style:none;display:grid}.work-card[data-v-7f9e25e2]{border:1px solid var(--border);height:100%;color:var(--text);background:var(--bg);border-radius:12px;flex-direction:column;text-decoration:none;transition:transform .2s,border-color .2s,box-shadow .2s;display:flex;overflow:hidden}.work-card[data-v-7f9e25e2]:hover{border-color:var(--accent-border);box-shadow:var(--shadow);transform:translateY(-4px)}.work-card__cover[data-v-7f9e25e2]{aspect-ratio:1;border-bottom:1px solid var(--border);background:var(--code-bg);justify-content:center;align-items:center;width:100%;display:flex}.work-card__img[data-v-7f9e25e2]{object-fit:cover;width:100%;height:100%}.work-card__placeholder[data-v-7f9e25e2]{width:32%;height:32%;color:var(--text);opacity:.4}.work-card__body[data-v-7f9e25e2]{padding:16px}.work-card__title[data-v-7f9e25e2]{color:var(--text-h);margin:0 0 4px;font-size:18px;font-weight:500}.work-card__desc[data-v-7f9e25e2]{font-size:14px;line-height:150%}@media (width<=640px){.works[data-v-7f9e25e2]{padding:32px 20px 48px}.works__grid[data-v-7f9e25e2]{grid-template-columns:repeat(2,1fr);gap:16px}.work-card__body[data-v-7f9e25e2]{padding:12px}}.resume-page[data-v-33477c34]{--ink:#111;--body:#3a3a3a;--muted:#8a8a8a;--line:#dcdcdc;--ease:cubic-bezier(.22, .61, .36, 1);min-height:calc(100svh - var(--navbar-height));color:var(--body);padding:40px 16px;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:16px;line-height:1.8}.page[data-v-33477c34]{box-sizing:border-box;background:#fff;border:1px solid #ececec;max-width:780px;margin:0 auto;padding:60px 64px}@keyframes fadeUp-33477c34{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes nameIn-33477c34{0%{opacity:0;letter-spacing:22px}to{opacity:1;letter-spacing:6px}}@keyframes lineGrow-33477c34{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.head[data-v-33477c34]{align-items:center;gap:28px;margin-bottom:44px;display:flex}.photo[data-v-33477c34]{border:1px solid var(--line);width:100px;height:140px;color:var(--muted);letter-spacing:1px;animation:fadeUp-33477c34 .8s var(--ease) both;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;display:flex;overflow:hidden}.photo img[data-v-33477c34]{object-fit:cover;width:100%;height:100%}.name[data-v-33477c34]{color:var(--ink);letter-spacing:6px;animation:nameIn-33477c34 1s var(--ease) both;font-size:34px;font-weight:600}.contact[data-v-33477c34]{color:var(--body);animation:fadeUp-33477c34 .8s var(--ease) .4s both;flex-wrap:wrap;gap:8px 0;padding-top:10px;font-size:13px;display:flex}.contact span[data-v-33477c34]{padding:0 14px;transition:color .3s;position:relative}.contact span+span[data-v-33477c34]:before{content:"";background:var(--line);width:1px;height:12px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.contact span[data-v-33477c34]:hover{color:#000}.contact a[data-v-33477c34]{color:inherit;border-bottom:1px solid #0000;text-decoration:none;transition:border-color .3s}.contact a[data-v-33477c34]:hover{border-bottom-color:var(--ink)}.section[data-v-33477c34]{opacity:0;transition:opacity .7s var(--ease), transform .7s var(--ease);margin-bottom:40px;transform:translateY(24px)}.section[data-v-33477c34]:last-child{margin-bottom:0}.section.in[data-v-33477c34]{opacity:1;transform:none}.sec-title[data-v-33477c34]{color:var(--ink);letter-spacing:3px;margin-bottom:20px;padding-bottom:10px;font-size:16px;font-weight:600;position:relative}.sec-title[data-v-33477c34]:after{content:"";background:var(--ink);transform-origin:0;width:100%;height:1px;position:absolute;bottom:0;left:0;transform:scaleX(0)}.section.in .sec-title[data-v-33477c34]:after{animation:lineGrow-33477c34 .9s var(--ease) .1s forwards}.skills[data-v-33477c34]{flex-wrap:wrap;gap:10px;display:flex}.skills span[data-v-33477c34]{color:var(--ink);cursor:default;border:1px solid #c9c9c9;border-radius:999px;padding:4px 14px;font-size:13px;transition:background .3s,color .3s,transform .3s,border-color .3s}.skills span[data-v-33477c34]:hover{background:var(--ink);color:#fff;border-color:var(--ink);transform:translateY(-3px)}.section.in .skills span[data-v-33477c34]{animation:fadeUp-33477c34 .5s var(--ease) both}.section.in .skills span[data-v-33477c34]:first-child{animation-delay:.15s}.section.in .skills span[data-v-33477c34]:nth-child(2){animation-delay:.22s}.section.in .skills span[data-v-33477c34]:nth-child(3){animation-delay:.29s}.section.in .skills span[data-v-33477c34]:nth-child(4){animation-delay:.36s}.section.in .skills span[data-v-33477c34]:nth-child(5){animation-delay:.43s}.section.in .skills span[data-v-33477c34]:nth-child(6){animation-delay:.5s}.section.in .skills span[data-v-33477c34]:nth-child(7){animation-delay:.57s}.section.in .skills span[data-v-33477c34]:nth-child(8){animation-delay:.64s}.section.in .skills span[data-v-33477c34]:nth-child(9){animation-delay:.71s}.section.in .skills span[data-v-33477c34]:nth-child(10){animation-delay:.78s}.item[data-v-33477c34]{border-left:2px solid #0000;margin-bottom:24px;padding-left:0;transition:border-color .3s,padding-left .3s}.item[data-v-33477c34]:last-child{margin-bottom:0}.item[data-v-33477c34]:hover{border-left-color:var(--ink);padding-left:12px}.item-head[data-v-33477c34]{flex-wrap:wrap;justify-content:space-between;align-items:baseline;display:flex}.item-title[data-v-33477c34]{color:var(--ink);font-size:15px;font-weight:600}.item-title .sub[data-v-33477c34]{color:var(--muted);margin-left:10px;font-size:13px;font-weight:400}.item-date[data-v-33477c34]{color:var(--muted);letter-spacing:1px;font-size:12.5px}.item-desc[data-v-33477c34]{margin:6px 0 0;padding:0;font-size:13.5px;list-style:none}.item-desc li[data-v-33477c34]{margin-bottom:3px;padding-left:16px;position:relative}.item-desc li[data-v-33477c34]:before{content:"–";color:var(--muted);position:absolute;left:0}.eval-text[data-v-33477c34]{font-size:13.5px}@page{size:A4;margin:12mm}@media print{.resume-page[data-v-33477c34]{padding:0}.page[data-v-33477c34]{max-width:none;box-shadow:none;border:none;padding:0}.section[data-v-33477c34]{opacity:1!important;transition:none!important;transform:none!important}.sec-title[data-v-33477c34]:after{transform:scaleX(1)!important}.skills span[data-v-33477c34],.name[data-v-33477c34],.contact[data-v-33477c34],.photo[data-v-33477c34],.head-info[data-v-33477c34]{animation:none!important}}@media (prefers-reduced-motion:reduce){.resume-page[data-v-33477c34] *{transition:none!important;animation:none!important}.section[data-v-33477c34]{opacity:1;transform:none}.sec-title[data-v-33477c34]:after{transform:scaleX(1)}}@media (width<=640px){.page[data-v-33477c34]{padding:40px 28px}.head[data-v-33477c34]{text-align:center;flex-direction:column}.name[data-v-33477c34]{letter-spacing:3px}}
