:root{color-scheme:light dark;--paper: #fdfdfc;--ink: #30302e;--muted: #777772;--faint: #858580;--link: #2673a8;--hover: #f0f0ed;--focus: #2673a8;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,PingFang SC,Microsoft YaHei,sans-serif;font-synthesis:none;-webkit-font-smoothing:antialiased}:root[data-theme=dark]{color-scheme:dark;--paper: #191918;--ink: #deded9;--muted: #a3a39c;--faint: #92928b;--link: #8ebee0;--hover: #282827;--focus: #8ebee0}:root[data-theme=light]{color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--paper: #191918;--ink: #deded9;--muted: #a3a39c;--faint: #92928b;--link: #8ebee0;--hover: #282827;--focus: #8ebee0}}*{box-sizing:border-box}html{background:var(--paper);scroll-padding-top:36px}body{margin:0;color:var(--ink);background:var(--paper);font-size:15px;line-height:1.9}a{color:inherit;text-decoration:none;text-underline-offset:5px;text-decoration-thickness:1px}button{color:inherit;font:inherit;cursor:pointer}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--focus);outline-offset:5px;border-radius:4px}::selection{background:var(--hover);color:var(--link)}.lang-en,html[lang=en] .lang-zh{display:none}html[lang=en] .lang-en{display:inline}.page-shell{width:min(640px,calc(100% - 48px));margin:0 auto}.skip-link{position:fixed;z-index:10;left:16px;top:12px;padding:8px 14px;color:var(--paper);background:var(--ink);transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.site-header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:44px}.brand{font-size:17px;font-weight:600;letter-spacing:-.035em;line-height:1.4;white-space:nowrap}.primary-nav{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}.primary-nav a,.primary-nav button{display:inline-flex;justify-content:center;align-items:center;min-height:36px;padding:6px 10px;border:0;border-radius:8px;background:transparent;white-space:nowrap}.primary-nav a:hover,.primary-nav button:hover{color:var(--ink);background:var(--hover)}.primary-nav .theme-toggle{width:36px;padding:8px}.theme-toggle svg{width:18px;height:18px}.theme-moon,[data-theme=dark] .theme-sun{display:none}[data-theme=dark] .theme-moon{display:block}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-sun{display:none}:root:not([data-theme=light]) .theme-moon{display:block}}.profile{display:flex;gap:20px;align-items:center;margin-top:60px}.profile-mark{display:block;width:64px;height:64px;flex:0 0 auto}h1{margin:0;font-size:22px;font-weight:500;line-height:1.4;letter-spacing:-.02em}.profile p{margin:6px 0 0;font-size:14px;color:var(--muted)}.content-section{margin-top:68px}h2{margin:0 0 25px;font-size:15px;font-weight:500;line-height:1.6}.prose p{margin:0 0 13px;text-wrap:pretty}.prose p:last-child{margin-bottom:0}.text-link{display:inline-block;margin-top:18px;color:var(--link)}.text-link:hover{text-decoration:underline}.project-list{display:grid;gap:28px}.project-row{display:grid;grid-template-columns:110px minmax(0,1fr);gap:18px;align-items:start}.project-kind{padding-top:2px;font-size:14px;color:var(--muted);line-height:1.65}.project-status{display:block;margin-top:7px;font-size:11px;color:var(--faint)}h3{margin:0;font-size:15px;font-weight:500;line-height:1.7}.project-link,.project-name{display:inline-flex;gap:9px;align-items:center}.project-link{min-height:28px;border-radius:3px}.project-link img{object-fit:contain;flex-shrink:0}.project-link:hover{color:var(--link)}.project-link:hover>span:not(.external-arrow){text-decoration:underline}.external-arrow{display:inline-block;color:var(--muted);font-size:14px}.project-link .external-arrow{margin-left:1px}.project-link:hover .external-arrow{color:var(--link);transform:translate(2px,-2px)}.project-body p{margin:7px 0 0;color:var(--muted);font-size:14px;line-height:1.9;text-wrap:pretty}.chord-mark{width:21px;display:inline-block;text-align:center;font-size:24px;line-height:21px;color:#648c82}.contact-row{display:grid;grid-template-columns:110px minmax(0,1fr);gap:18px;align-items:baseline}.contact-label{color:var(--muted);font-size:14px}.email-link{width:fit-content;overflow-wrap:anywhere}.email-link .external-arrow{margin-left:10px}.email-link:hover{color:var(--link);text-decoration:underline}.site-footer{padding:78px 0 40px;color:var(--faint);font-size:11px;line-height:1.8}.site-footer p{margin:0 0 10px}.footer-records{display:flex;flex-wrap:wrap;gap:4px 18px}.footer-records a:hover{color:var(--ink)}.public-security-record{display:inline-flex;align-items:center;gap:5px}.public-security-record img{object-fit:contain}[data-theme=dark] .movo-mark{filter:brightness(2.7)}[data-theme=dark] .project-link img[src*=cove-mark]{filter:invert(1)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .movo-mark{filter:brightness(2.7)}:root:not([data-theme=light]) .project-link img[src*=cove-mark]{filter:invert(1)}}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}a,button{transition:color .16s ease,background-color .16s ease}.external-arrow{transition:transform .16s ease}}@media(max-width:520px){.page-shell{width:calc(100% - 40px)}.site-header{padding-top:24px;gap:12px}.primary-nav{gap:0}.primary-nav a,.primary-nav button{padding-inline:8px;min-height:40px}.profile{margin-top:42px;gap:16px}.profile-mark{width:56px;height:56px}h1{font-size:21px}.profile p{font-size:13px}.content-section{margin-top:52px}.project-row{grid-template-columns:72px minmax(0,1fr);gap:16px}.project-kind{font-size:12px}.project-status{font-size:10px}.project-list{gap:29px}.contact-row{grid-template-columns:72px minmax(0,1fr);gap:16px}.email-link{font-size:14px}.site-footer{padding-top:60px}.footer-records{flex-direction:column;align-items:flex-start}}@media(max-width:360px){.page-shell{width:calc(100% - 32px)}.brand{font-size:17px}.primary-nav a,.primary-nav button{padding-inline:6px}.primary-nav .theme-toggle{width:30px}.project-row{grid-template-columns:65px minmax(0,1fr);gap:12px}.contact-row{grid-template-columns:1fr;gap:6px}}@media(max-width:520px){.site-header{flex-wrap:wrap;row-gap:12px}.primary-nav{margin-left:auto}}
