.music-player[data-v-0f5ab6a3]{position:fixed;top:var(--spacing-xl);right:var(--spacing-xl);display:flex;align-items:center;gap:var(--spacing-xs);z-index:100}.music-btn[data-v-0f5ab6a3]{display:inline-flex;align-items:center;justify-content:center;width:auto;height:auto;padding:0;border:none;background:transparent;cursor:pointer}.music-btn[data-v-0f5ab6a3]:hover{opacity:.8}.music-icon[data-v-0f5ab6a3]{width:40px;height:40px;transition:transform .3s}.music-player--playing .music-icon[data-v-0f5ab6a3]{animation:music-spin-0f5ab6a3 4s linear infinite}@keyframes music-spin-0f5ab6a3{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 480px){.music-player[data-v-0f5ab6a3]{top:var(--spacing-md);right:var(--spacing-md)}.music-icon[data-v-0f5ab6a3]{width:36px;height:36px}}:root,:root[data-theme=dark]{--color-primary: #0ea5e9;--color-primary-hover: #38bdf8;--color-bg: #0f172a;--color-text: #e0f2fe;--color-muted: #7dd3fc;--color-border: #0e7490;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--radius-btn: .5rem;--radius-input: .5rem;--radius-card: .75rem}@media (prefers-color-scheme: light){:root:not([data-theme]){--color-primary: #0369a1;--color-primary-hover: #0284c7;--color-bg: #ffffff;--color-text: #0c4a6e;--color-muted: #64748b;--color-border: #e2e8f0}}[data-theme=light]{--color-primary: #0369a1;--color-primary-hover: #0284c7;--color-bg: #ffffff;--color-text: #0c4a6e;--color-muted: #64748b;--color-border: #e2e8f0}[data-theme=dark]{--color-primary: #0ea5e9;--color-primary-hover: #38bdf8;--color-bg: #0f172a;--color-text: #e0f2fe;--color-muted: #7dd3fc;--color-border: #0e7490}:root{font-family:PingFang SC,Microsoft YaHei,Hiragino Sans GB,Noto Sans SC,Source Han Sans SC,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:1.6;font-weight:400;color-scheme:light dark;color:var(--color-text);background-color:var(--color-bg);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}h1{font-size:2rem;line-height:1.25;font-weight:700;margin:0 0 var(--spacing-md)}h2{font-size:1.5rem;line-height:1.3;font-weight:600;margin:var(--spacing-xl) 0 var(--spacing-md)}h2:first-child{margin-top:0}h3{font-size:1.25rem;line-height:1.35;font-weight:600;margin:var(--spacing-lg) 0 var(--spacing-sm)}p{margin:0 0 var(--spacing-md);font-size:1rem;line-height:1.6}p:last-child{margin-bottom:0}a{font-weight:500;color:var(--color-primary);text-decoration:none}a:hover{color:var(--color-primary-hover);text-decoration:underline}.page{max-width:960px;margin:0 auto;padding:var(--spacing-xl) var(--spacing-xl)}@media (min-width: 1000px){.page{padding-left:var(--spacing-2xl);padding-right:var(--spacing-2xl)}}.site-nav{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-xl);border-bottom:1px solid var(--color-border);margin-bottom:var(--spacing-xl);max-width:960px;margin-left:auto;margin-right:auto}@media (min-width: 1000px){.site-nav{padding-left:var(--spacing-2xl);padding-right:var(--spacing-2xl)}}.site-nav-links{display:flex;gap:var(--spacing-lg)}.site-nav a{color:var(--color-text);opacity:.85;font-weight:500}.site-nav a:hover{opacity:1;color:var(--color-primary-hover);text-decoration:none}.site-nav a.router-link-active{opacity:1;color:var(--color-primary);font-weight:600;text-decoration:none}.site-logo{display:inline-block;border-radius:50%;overflow:hidden;transition:opacity .2s}.site-logo:hover{opacity:.85;text-decoration:none}.site-logo img{display:block;border-radius:50%;border:2px solid var(--color-border)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;padding:0;border:none;border-radius:var(--radius-btn);background:transparent;color:var(--color-text);cursor:pointer;opacity:.9;transition:opacity .2s,background-color .2s}.theme-toggle:hover{opacity:1;background-color:var(--color-border)}.theme-icon{font-size:1.25rem;line-height:1}.site-footer{margin-top:var(--spacing-2xl);padding:var(--spacing-lg) var(--spacing-xl);border-top:1px solid var(--color-border);font-size:.875rem;line-height:1.5;color:var(--color-muted);text-align:center;max-width:960px;margin-left:auto;margin-right:auto}.site-footer-sep{margin:0 .25em;opacity:.7}.site-footer-icp{color:var(--color-muted);text-decoration:none}.site-footer-icp:hover{color:var(--color-primary);text-decoration:underline}@media (min-width: 1000px){.site-footer{padding-left:var(--spacing-2xl);padding-right:var(--spacing-2xl)}}.btn{display:inline-block;font-family:inherit;font-weight:500;cursor:pointer;border:none;border-radius:var(--radius-btn);transition:background-color .2s,color .2s}.btn-primary{background-color:var(--color-primary);color:#fff;padding:.625rem 1.25rem}.btn-primary:hover{background-color:var(--color-primary-hover)}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.btn-secondary{background:transparent;color:var(--color-primary);border:1px solid var(--color-border);padding:.625rem 1.25rem}.btn-secondary:hover{background-color:#0ea5e91a}@media (prefers-color-scheme: light){.btn-secondary:hover{background-color:#0369a114}}.btn-text{background:transparent;color:var(--color-primary);padding:var(--spacing-sm) var(--spacing-md)}.btn-text:hover{text-decoration:underline}.card{background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-card);padding:var(--spacing-md)}@media (prefers-color-scheme: light){.card{box-shadow:0 1px 3px #00000014}}.section{margin-bottom:var(--spacing-2xl)}.section:last-child{margin-bottom:0}.lead{font-size:1.125rem;color:var(--color-text);margin-bottom:var(--spacing-md)}.hero{text-align:center;padding:var(--spacing-2xl) 0;margin-bottom:var(--spacing-xl)}.hero-avatar{width:120px;height:120px;border-radius:50%;border:3px solid var(--color-border);margin:0 auto var(--spacing-lg);object-fit:cover}.hero h1{margin-bottom:var(--spacing-md)}.hero-lead{font-size:1.125rem;max-width:36em;margin-left:auto;margin-right:auto;margin-bottom:var(--spacing-sm)}.hero-meta{font-size:.875rem;color:var(--color-muted);margin-bottom:0}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--spacing-lg)}.card-link{display:block;text-decoration:none;color:inherit;transition:border-color .2s,box-shadow .2s}.card-link:hover{border-color:var(--color-primary);text-decoration:none}@media (prefers-color-scheme: light){.card-link:hover{box-shadow:0 2px 8px #0369a11f}}.card-link h3{margin-top:0;margin-bottom:var(--spacing-sm)}.card-link p{margin-bottom:var(--spacing-sm);font-size:.9375rem;color:var(--color-muted)}.card-link .card-arrow{color:var(--color-primary);font-weight:600}.card-image{width:100%;height:160px;object-fit:cover;border-radius:calc(var(--radius-card) - 2px);margin-bottom:var(--spacing-md);background-color:var(--color-border)}.timeline{list-style:none;padding:0;margin:0;border-left:2px solid var(--color-border);padding-left:var(--spacing-lg);margin-left:var(--spacing-sm)}.timeline li{position:relative;margin-bottom:var(--spacing-xl)}.timeline li:last-child{margin-bottom:0}.timeline-year{position:absolute;left:calc(-1 * var(--spacing-lg) - .5rem);font-size:.875rem;font-weight:600;color:var(--color-primary);min-width:2.5rem;text-align:right}.timeline-content strong{display:block;margin-left:var(--spacing-2xl);margin-bottom:var(--spacing-xs)}.timeline-content p{margin:0;font-size:.9375rem;color:var(--color-muted)}.timeline-company{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-xs);margin-left:var(--spacing-2xl)}.company-icon{width:24px;height:24px;border-radius:4px;background-color:var(--color-border);flex-shrink:0}.tag-list{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:var(--spacing-sm)}.tag-list-inline{margin:0}.tag{display:inline-flex;align-items:center;gap:.375rem;font-size:.8125rem;padding:var(--spacing-xs) var(--spacing-sm);background-color:var(--color-border);color:var(--color-text);border-radius:.25rem}.tag-icon{flex-shrink:0;opacity:.8}.project-list{display:flex;flex-direction:column;gap:var(--spacing-lg)}.project-card{padding:0;overflow:hidden}.project-cover{width:100%;height:180px;object-fit:cover;background-color:var(--color-border);display:block}.project-card>:not(.project-cover){padding:var(--spacing-md)}.project-card h3{margin-top:0;margin-bottom:var(--spacing-sm)}.project-card h3 a{color:inherit}.project-card h3 a:hover{color:var(--color-primary)}.project-card-header{display:flex;flex-wrap:wrap;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.project-card-header .tag-list{margin:0}.project-links{margin-top:var(--spacing-md);margin-bottom:0}.project-links .btn{margin-right:var(--spacing-md)}.contact-list{list-style:none;padding:0;margin:0}.contact-list li{margin-bottom:var(--spacing-md);display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--spacing-sm)}.contact-label{font-weight:600;min-width:4em;color:var(--color-muted);font-size:.875rem}.color-muted{color:var(--color-muted);font-size:.875rem}.contact-banner{margin:calc(-1 * var(--spacing-xl)) calc(-1 * var(--spacing-xl)) var(--spacing-xl);height:140px;overflow:hidden}@media (min-width: 1000px){.contact-banner{margin-left:calc(-1 * var(--spacing-2xl));margin-right:calc(-1 * var(--spacing-2xl))}}.contact-banner-image{width:100%;height:100%;object-fit:cover;object-position:center;background-color:var(--color-border)}.contact-icons{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:var(--spacing-lg)}.contact-icon-link{display:inline-flex;align-items:center;gap:var(--spacing-sm);color:var(--color-text);font-weight:500;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-card);transition:border-color .2s,background-color .2s}.contact-icon-link:hover{border-color:var(--color-primary);background-color:#0ea5e914;color:var(--color-text);text-decoration:none}@media (prefers-color-scheme: light){.contact-icon-link:hover{background-color:#0369a10f}}.contact-icon-link svg{flex-shrink:0;color:var(--color-primary)}.contact-form{max-width:28rem}.form-row{margin-bottom:var(--spacing-md)}.form-row label{display:block;font-weight:500;margin-bottom:var(--spacing-xs);font-size:.9375rem}.form-actions{margin-top:var(--spacing-lg);margin-bottom:0}.form-hint{margin-top:var(--spacing-lg);font-size:.875rem;color:var(--color-muted)}.form-hint code{font-family:ui-monospace,Cascadia Code,Fira Code,Consolas,monospace;font-size:.875em;padding:.1em .35em;background-color:var(--color-border);border-radius:.25rem}input[type=text],input[type=email],input[type=url],textarea{font-family:inherit;font-size:1rem;color:var(--color-text);background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-input);padding:.5rem .75rem;width:100%;max-width:100%}input::placeholder,textarea::placeholder{color:var(--color-muted);opacity:.8}input:focus,textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #0ea5e933}@media (prefers-color-scheme: light){input:focus,textarea:focus{box-shadow:0 0 0 2px #0369a126}}.bg-effect{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;overflow:hidden;pointer-events:none}.bg-blob{position:absolute;border-radius:50%;filter:blur(80px);opacity:.2;animation:bg-float 20s ease-in-out infinite}.bg-blob-1{width:60vmax;height:60vmax;background:var(--color-primary);top:-20%;left:-10%;animation-delay:0s}.bg-blob-2{width:50vmax;height:50vmax;background:var(--color-primary);bottom:-20%;right:-10%;animation-delay:-7s}.bg-blob-3{width:40vmax;height:40vmax;background:var(--color-primary-hover);top:50%;left:50%;animation:bg-float-center 25s ease-in-out infinite;animation-delay:-14s}[data-theme=light] .bg-blob{opacity:.12}@media (prefers-color-scheme: light){:root:not([data-theme]) .bg-blob{opacity:.12}}@keyframes bg-float{0%,to{transform:translate(0)}33%{transform:translate(5%,-5%)}66%{transform:translate(-5%,5%)}}@keyframes bg-float-center{0%,to{transform:translate(-50%,-50%)}33%{transform:translate(-45%,-55%)}66%{transform:translate(-55%,-45%)}}@media (max-width: 768px){.page{padding:var(--spacing-lg) var(--spacing-md)}.site-nav{padding:var(--spacing-md) var(--spacing-md)}.site-nav-links{gap:var(--spacing-md)}.site-footer{padding:var(--spacing-md) var(--spacing-md);font-size:.8125rem}.hero{padding:var(--spacing-xl) 0;margin-bottom:var(--spacing-lg)}.hero h1{font-size:1.75rem}.hero-lead{font-size:1rem}.card-grid{grid-template-columns:1fr;gap:var(--spacing-md)}.timeline{padding-left:var(--spacing-md);margin-left:.5rem}.timeline-year{left:calc(-1 * var(--spacing-md) - .4rem);min-width:2.2rem;font-size:.8125rem}.timeline-content strong,.timeline-company{margin-left:var(--spacing-md)}.contact-label{min-width:100%;margin-bottom:.125rem}.contact-form{max-width:100%}.section{margin-bottom:var(--spacing-xl)}.contact-banner{margin:calc(-1 * var(--spacing-lg)) calc(-1 * var(--spacing-lg)) var(--spacing-lg);height:100px}.contact-icons{flex-direction:column;gap:var(--spacing-sm)}}@media (max-width: 480px){.page{padding:var(--spacing-md) var(--spacing-sm)}.site-nav{padding:var(--spacing-sm) var(--spacing-sm);gap:var(--spacing-sm)}.site-nav-links{gap:var(--spacing-sm)}.site-nav a{padding:var(--spacing-sm) 0;min-height:44px;display:inline-flex;align-items:center}.theme-toggle{min-width:44px;min-height:44px;width:44px;height:44px}.site-footer{padding:var(--spacing-md) var(--spacing-sm)}h1{font-size:1.5rem}h2{font-size:1.25rem;margin:var(--spacing-lg) 0 var(--spacing-sm)}.hero{padding:var(--spacing-lg) 0}.hero h1{font-size:1.5rem}.hero-avatar{width:100px;height:100px}.btn,.btn-primary,.btn-secondary,.btn-text{min-height:44px;padding:.75rem 1.25rem;display:inline-flex;align-items:center;justify-content:center}.btn-text{padding:.75rem var(--spacing-md)}.project-links .btn{margin-right:var(--spacing-sm)}.card-image{height:120px}.project-cover{height:140px}.contact-banner{height:80px}}.click-ripple{position:fixed;left:0;top:0;width:0;height:0;border-radius:50%;background:#0ea5e959;transform:translate(-50%,-50%);pointer-events:none;z-index:9999;transition:width .4s ease-out,height .4s ease-out,opacity .4s ease-out}[data-theme=light] .click-ripple{background:#0369a140}.click-ripple--active{width:180px;height:180px;opacity:0}
