:root{--c-bg: #ffffff;--c-bg-2: #f8fafc;--c-bg-3: #f1f5f9;--c-text: #0f172a;--c-text-muted: #64748b;--c-border: #e2e8f0;--c-accent: #6366f1;--c-accent-hover: #4f46e5;--c-accent-dim: #eef2ff;--c-green: #10b981;--c-shadow: 0 1px 3px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .04);--c-shadow-lg: 0 4px 16px rgba(0, 0, 0, .08);--font: "Inter", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--radius: .5rem;--radius-lg: .875rem;--max-w: 1100px;--nav-h: 64px;--t: .15s ease}[data-theme=dark]{--c-bg: #0f172a;--c-bg-2: #1e293b;--c-bg-3: #334155;--c-text: #f1f5f9;--c-text-muted: #94a3b8;--c-border: #334155;--c-accent: #818cf8;--c-accent-hover: #a5b4fc;--c-accent-dim: #1e1b4b;--c-shadow: 0 1px 3px rgba(0, 0, 0, .3);--c-shadow-lg: 0 4px 16px rgba(0, 0, 0, .4)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--font);background:var(--c-bg);color:var(--c-text);line-height:1.7;font-size:16px;transition:background var(--t),color var(--t);min-height:100vh;display:flex;flex-direction:column}main{flex:1}img,video{max-width:100%;height:auto;display:block}a{color:var(--c-accent);text-decoration:none;transition:color var(--t)}a:hover{color:var(--c-accent-hover)}button{cursor:pointer;font-family:inherit}ul,ol{list-style:none}h1,h2,h3,h4,h5,h6{line-height:1.25;font-weight:700;color:var(--c-text);letter-spacing:-.02em}h1{font-size:clamp(2rem,5vw,3.25rem)}h2{font-size:clamp(1.5rem,3vw,2rem)}h3{font-size:1.25rem}h4{font-size:1.1rem}p{color:var(--c-text)}.text-muted{color:var(--c-text-muted)}code,pre{font-family:var(--font-mono);font-size:.875em}code{background:var(--c-bg-3);border:1px solid var(--c-border);padding:.15em .4em;border-radius:4px}pre{background:var(--c-bg-2);border:1px solid var(--c-border);padding:1.25rem;border-radius:var(--radius);overflow-x:auto}pre code{background:none;border:none;padding:0}.prose h2{margin-top:2rem;margin-bottom:.75rem}.prose h3{margin-top:1.5rem;margin-bottom:.5rem}.prose p{margin-bottom:1.25rem}.prose ul,.prose ol{margin:1rem 0 1.25rem 1.5rem;list-style:disc}.prose ol{list-style:decimal}.prose li{margin-bottom:.4rem}.prose blockquote{border-left:3px solid var(--c-accent);padding-left:1.25rem;color:var(--c-text-muted);margin-block:1.5rem;font-style:italic}.prose a{text-decoration:underline;text-underline-offset:3px}.prose img{border-radius:var(--radius);margin-block:1.5rem;box-shadow:var(--c-shadow)}.container{width:100%;max-width:var(--max-w);margin-inline:auto;padding-inline:1.5rem}.section{padding-block:5rem}.section-sm{padding-block:3rem}hr{border:none;border-top:1px solid var(--c-border);margin-block:2rem}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.625rem 1.25rem;border-radius:var(--radius);font-size:.9rem;font-weight:600;border:2px solid transparent;transition:all var(--t);white-space:nowrap}.btn-primary{background:var(--c-accent);color:#fff;border-color:var(--c-accent)}.btn-primary:hover{background:var(--c-accent-hover);border-color:var(--c-accent-hover);color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px #6366f166}.btn-outline{background:transparent;color:var(--c-accent);border-color:var(--c-accent)}.btn-outline:hover{background:var(--c-accent-dim);color:var(--c-accent-hover);border-color:var(--c-accent-hover);transform:translateY(-1px)}.badge{display:inline-flex;align-items:center;padding:.2em .65em;border-radius:999px;font-size:.78rem;font-weight:500;background:var(--c-bg-3);color:var(--c-text-muted);border:1px solid var(--c-border)}.badge-accent{background:var(--c-accent-dim);color:var(--c-accent);border-color:var(--c-accent-dim)}.card{background:var(--c-bg-2);border:1px solid var(--c-border);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--c-shadow);transition:box-shadow var(--t),transform var(--t),border-color var(--t)}.card:hover{box-shadow:var(--c-shadow-lg);transform:translateY(-2px);border-color:var(--c-accent)}.section-label{font-size:.8rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--c-accent);margin-bottom:.5rem}.section-heading{margin-bottom:1rem}.section-divider{width:3rem;height:3px;background:var(--c-accent);border-radius:999px;margin-bottom:2.5rem}.nav{position:sticky;top:0;z-index:100;height:var(--nav-h);border-bottom:1px solid var(--c-border);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);background:color-mix(in srgb,var(--c-bg) 85%,transparent);transition:background var(--t),border-color var(--t)}.nav-inner{display:flex;align-items:center;justify-content:space-between;height:100%}.nav-logo{font-weight:700;font-size:1.1rem;color:var(--c-text);letter-spacing:-.03em}.nav-logo:hover{color:var(--c-accent)}.nav-links{display:flex;align-items:center;gap:.25rem}.nav-link{padding:.4rem .75rem;border-radius:var(--radius);font-size:.9rem;font-weight:500;color:var(--c-text-muted);transition:color var(--t),background var(--t)}.nav-link:hover,.nav-link[aria-current=page]{color:var(--c-text);background:var(--c-bg-3)}.nav-actions{display:flex;align-items:center;gap:.5rem}.theme-btn{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:var(--radius);border:1px solid var(--c-border);background:transparent;color:var(--c-text-muted);transition:all var(--t)}.theme-btn:hover{background:var(--c-bg-3);color:var(--c-text)}.icon-sun{display:none}.icon-moon,[data-theme=dark] .icon-sun{display:block}[data-theme=dark] .icon-moon{display:none}.lang-btn{display:flex;align-items:center;justify-content:center;height:2.25rem;padding:0 .6rem;border-radius:var(--radius);border:1px solid var(--c-border);background:transparent;color:var(--c-text-muted);font-size:.8rem;font-weight:600;font-family:inherit;letter-spacing:.03em;cursor:pointer;transition:all var(--t)}.lang-btn:hover{background:var(--c-bg-3);color:var(--c-text)}.hamburger{display:none;flex-direction:column;justify-content:center;gap:5px;width:2.25rem;height:2.25rem;border-radius:var(--radius);border:1px solid var(--c-border);background:transparent;padding:.4rem}.hamburger span{display:block;height:2px;width:100%;background:var(--c-text);border-radius:2px;transition:transform var(--t),opacity var(--t)}.nav-drawer{display:none;position:fixed;inset:var(--nav-h) 0 0 0;background:var(--c-bg);border-top:1px solid var(--c-border);padding:1.5rem;flex-direction:column;gap:.5rem;z-index:99}.nav-drawer.open{display:flex}.nav-drawer .nav-link{font-size:1.1rem;padding:.75rem 1rem}@media(max-width:720px){.nav-links{display:none}.hamburger{display:flex}}.footer{border-top:1px solid var(--c-border);padding-block:2rem;color:var(--c-text-muted);font-size:.875rem}.footer-inner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem}.footer-links{display:flex;gap:1.25rem}.footer-links a{color:var(--c-text-muted)}.footer-links a:hover{color:var(--c-accent)}.hero{padding-block:6rem 4rem}.hero-eyebrow{font-size:.875rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--c-accent);margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.hero-eyebrow:before{content:"";display:inline-block;width:1.5rem;height:2px;background:var(--c-accent);border-radius:2px}.hero-title{margin-bottom:1rem}.hero-subtitle{font-size:1.15rem;color:var(--c-text-muted);max-width:42ch;margin-bottom:2rem;line-height:1.6}.hero-actions{display:flex;gap:.75rem;flex-wrap:wrap}.skills-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;margin-top:2rem}.skill-card{background:var(--c-bg-2);border:1px solid var(--c-border);border-radius:var(--radius);padding:1.25rem}.skill-card h4{font-size:.85rem;font-weight:600;color:var(--c-accent);margin-bottom:.6rem;text-transform:uppercase;letter-spacing:.06em}.skill-card p{font-size:.875rem;color:var(--c-text-muted);line-height:1.5}.journey-wrap{border:1px solid var(--c-border);border-radius:var(--radius-lg);overflow:hidden;background:var(--c-bg-2)}#journey-map{width:100%;display:block}.journey-legend{display:flex;gap:1.5rem;padding:.6rem 1.25rem;border-top:1px solid var(--c-border);background:var(--c-bg-2);opacity:0;transition:opacity .4s ease}.journey-legend-item{display:flex;align-items:center;gap:.5rem;font-size:.78rem;color:var(--c-text-muted)}.legend-dot{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0}.timeline{position:relative;padding-left:2rem}.timeline:before{content:"";position:absolute;left:.5rem;top:.5rem;bottom:0;width:2px;background:var(--c-border);border-radius:2px}.timeline-item{position:relative;margin-bottom:2.5rem}.timeline-dot{position:absolute;left:-1.625rem;top:.5rem;width:.75rem;height:.75rem;background:var(--c-accent);border-radius:50%;border:2px solid var(--c-bg);box-shadow:0 0 0 2px var(--c-accent)}.timeline-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.25rem}.timeline-company{color:var(--c-text-muted);font-size:.9rem;margin-bottom:.75rem}.timeline-period{font-size:.8rem;font-weight:500;color:var(--c-accent);background:var(--c-accent-dim);padding:.2em .65em;border-radius:999px;white-space:nowrap}.timeline-bullets{padding-left:1.25rem}.timeline-bullets li{list-style:disc;color:var(--c-text-muted);font-size:.9rem;margin-bottom:.35rem;line-height:1.55}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;margin-top:2rem}.project-card{background:var(--c-bg-2);border:1px solid var(--c-border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--c-shadow);transition:transform var(--t),box-shadow var(--t),border-color var(--t);display:flex;flex-direction:column}.project-card:hover{transform:translateY(-3px);box-shadow:var(--c-shadow-lg);border-color:var(--c-accent)}.project-img{width:100%;height:180px;object-fit:cover;background:var(--c-bg-3)}.project-img-placeholder{width:100%;height:180px;background:linear-gradient(135deg,var(--c-accent-dim),var(--c-bg-3));display:flex;align-items:center;justify-content:center;color:var(--c-accent);font-size:2.5rem}.project-body{padding:1.25rem;flex:1;display:flex;flex-direction:column}.project-body h3{margin-bottom:.5rem;font-size:1.05rem}.project-desc{color:var(--c-text-muted);font-size:.875rem;flex:1;margin-bottom:1rem}.project-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1rem}.project-links{display:flex;gap:.75rem}.project-links a{font-size:.8rem;font-weight:600;color:var(--c-accent);display:flex;align-items:center;gap:.3rem}.project-links a:hover{color:var(--c-accent-hover)}.blog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;margin-top:2rem}.post-card{background:var(--c-bg-2);border:1px solid var(--c-border);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--c-shadow);transition:transform var(--t),box-shadow var(--t),border-color var(--t);display:flex;flex-direction:column}.post-card:hover{transform:translateY(-2px);box-shadow:var(--c-shadow-lg);border-color:var(--c-accent)}.post-card h3{margin-bottom:.5rem;font-size:1.05rem}.post-card .read-more{font-size:.85rem;font-weight:600;color:var(--c-accent);display:flex;align-items:center;gap:.3rem;align-self:flex-start}.post-meta{display:flex;gap:.5rem;align-items:center;margin-bottom:.75rem;flex-wrap:wrap}.post-date{font-size:.8rem;color:var(--c-text-muted)}.post-excerpt{color:var(--c-text-muted);font-size:.875rem;flex:1;margin-bottom:1rem}.post-header{padding-block:3rem 2rem}.post-header h1{margin-bottom:1rem}.post-cover{width:100%;max-height:420px;object-fit:cover;border-radius:var(--radius-lg);margin-bottom:2.5rem}.content-filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:2rem}.content-filter{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem 1rem;border-radius:999px;border:1.5px solid var(--c-border);background:var(--c-bg-2);color:var(--c-text-muted);font-size:.85rem;font-weight:500;cursor:pointer;transition:border-color var(--t),color var(--t),background var(--t)}.content-filter:hover{border-color:var(--c-accent);color:var(--c-accent)}.content-filter.active{border-color:var(--c-accent);background:var(--c-accent);color:#fff}.content-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;align-items:start}.content-empty{grid-column:1 / -1;text-align:center;padding:3rem 1rem;color:var(--c-text-muted)}.hobby-card{background:var(--c-bg-2);border:1px solid var(--c-border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--c-shadow);transition:transform var(--t),box-shadow var(--t),border-color var(--t)}.hobby-card:hover{transform:translateY(-3px);box-shadow:var(--c-shadow-lg);border-color:var(--c-accent)}.hobby-card-body{padding:1.25rem}.hobby-card-title{font-size:1rem;font-weight:600;margin-bottom:.6rem;color:var(--c-text)}.hobby-card-text{font-size:.875rem;color:var(--c-text-muted);line-height:1.7}.hobby-card-text p{margin-bottom:.75rem}.hobby-card-text p:last-child{margin-bottom:0}.hobby-card--text{border-left:3px solid var(--c-accent)}.hobby-card--mixed .hobby-card-body{border-top:1px solid var(--c-border)}.hobby-photos{display:grid;gap:2px;background:var(--c-bg-3)}.hobby-photos--1{grid-template-columns:1fr}.hobby-photos--2,.hobby-photos--3{grid-template-columns:1fr 1fr}.hobby-photos--3 .hobby-photo:last-child{grid-column:1 / -1}.hobby-photos--4{grid-template-columns:1fr 1fr}.hobby-photo{overflow:hidden;position:relative;aspect-ratio:4/3}.hobby-photo img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease;display:block}.hobby-photo figcaption{position:absolute;bottom:0;inset-inline:0;padding:.4rem .6rem;font-size:.75rem;color:#fff;background:linear-gradient(transparent,#0000008c)}.hobby-photos--1 .hobby-photo{aspect-ratio:16/9}.hobby-card:hover .hobby-photo img{transform:scale(1.04)}.hobby-panel{animation:fadeIn .16s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(max-width:600px){.hobby-card-grid{grid-template-columns:1fr}}.contact-grid{display:grid;grid-template-columns:1fr 1.6fr;gap:3rem;align-items:start;margin-top:2rem}.contact-info h3{margin-bottom:.5rem}.contact-info p{color:var(--c-text-muted);font-size:.9rem;margin-bottom:1.5rem}.contact-links{display:flex;flex-direction:column;gap:.75rem}.contact-link{display:flex;align-items:center;gap:.75rem;color:var(--c-text-muted);font-size:.9rem}.contact-link:hover{color:var(--c-accent)}.contact-icon{width:2rem;height:2rem;background:var(--c-bg-3);border:1px solid var(--c-border);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;flex-shrink:0}.form{display:flex;flex-direction:column;gap:1.25rem}.form-group{display:flex;flex-direction:column;gap:.4rem}.form-group label{font-size:.875rem;font-weight:600;color:var(--c-text)}.form-input,.form-textarea{padding:.65rem .9rem;border-radius:var(--radius);border:1.5px solid var(--c-border);background:var(--c-bg-2);color:var(--c-text);font-family:var(--font);font-size:.9rem;transition:border-color var(--t),box-shadow var(--t);width:100%}.form-input:focus,.form-textarea:focus{outline:none;border-color:var(--c-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--c-accent) 20%,transparent)}.form-textarea{min-height:140px;resize:vertical}.social-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem;margin-top:.5rem}.social-card{display:flex;align-items:center;gap:1rem;padding:1rem 1.25rem;border:1px solid var(--c-border);border-radius:var(--radius-lg);background:var(--c-bg-2);color:var(--c-text);text-decoration:none;transition:border-color var(--t),box-shadow var(--t),transform var(--t)}.social-card:hover{border-color:var(--c-accent);box-shadow:var(--c-shadow-lg);transform:translateY(-2px)}.social-card:hover .social-arrow{color:var(--c-accent)}.social-icon{width:2.75rem;height:2.75rem;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#fff}.social-icon--linkedin{background:#0a66c2}.social-icon--github{background:#24292e}.social-icon--instagram{background:linear-gradient(135deg,#f09433,#e6683c,#dc2743,#cc2366,#bc1888)}.social-icon--youtube{background:red}.social-icon--bilibili{background:#00a1d6}.social-icon--rednote{background:#fe2c55}.social-info{flex:1;min-width:0}.social-name{font-weight:600;font-size:.9rem}.social-handle{font-size:.78rem;color:var(--c-text-muted);margin-top:.1rem}.social-arrow{color:var(--c-text-muted);flex-shrink:0;transition:color var(--t)}@media(max-width:720px){.contact-grid{grid-template-columns:1fr}}.bio-text{display:flex;flex-direction:column;gap:1rem;color:var(--c-text-muted);line-height:1.8}.bio-text strong{color:#f97316;font-weight:600}.edu-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(440px,1fr));gap:1.25rem;margin-top:1.5rem}.edu-card{background:var(--c-bg-2);border:1px solid var(--c-border);border-radius:var(--radius-lg);padding:1.5rem}.edu-card .school{font-weight:700;font-size:1.05rem;margin-bottom:.2rem}.edu-card .degree{color:var(--c-accent);font-weight:600;font-size:.9rem;margin-bottom:.3rem}.edu-card .period{font-size:.8rem;color:var(--c-text-muted)}.edu-location{font-size:.8rem;color:var(--c-text-muted);margin-bottom:.3rem}.edu-notes{font-size:.82rem;color:var(--c-text-muted);margin-top:.6rem;line-height:1.6}.edu-activities{margin-top:.75rem;display:flex;flex-direction:column;gap:.3rem}.edu-activities li{font-size:.82rem;color:var(--c-text-muted);padding-left:1rem;position:relative}.edu-activities li:before{content:"·";position:absolute;left:.2rem;color:var(--c-accent);font-weight:700}@media(max-width:960px){.edu-grid{grid-template-columns:1fr}}.cert-list{display:flex;flex-direction:column;gap:.75rem;margin-top:1.5rem}.cert-item{display:flex;align-items:center;gap:1rem;background:var(--c-bg-2);border:1px solid var(--c-border);border-radius:var(--radius);padding:.875rem 1rem}.cert-icon{width:2.25rem;height:2.25rem;background:#0078d4;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;color:#fff;font-size:.75rem;font-weight:700;flex-shrink:0;letter-spacing:-.02em}.cert-info .name{font-weight:600;font-size:.9rem}.cert-info .issuer{font-size:.8rem;color:var(--c-text-muted)}.cert-info .cert-id{font-size:.75rem;color:var(--c-text-muted);margin-top:.15rem;font-family:var(--font-mono)}.cert-link{margin-left:auto;flex-shrink:0;display:inline-flex;align-items:center;gap:.3rem;font-size:.8rem;font-weight:600;color:var(--c-accent);padding:.3rem .7rem;border:1px solid var(--c-accent);border-radius:var(--radius);transition:background var(--t),color var(--t);white-space:nowrap}.cert-link:hover{background:var(--c-accent-dim);color:var(--c-accent-hover)}.awards-list{display:flex;flex-direction:column;gap:.875rem;margin-top:1.5rem}.award-item{display:flex;gap:1rem;background:var(--c-bg-2);border:1px solid var(--c-border);border-radius:var(--radius);padding:1rem 1.125rem}.award-icon{width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;font-size:1.25rem;flex-shrink:0;border-radius:var(--radius);background:var(--c-bg-3)}.award-body{flex:1;min-width:0}.award-title{font-weight:600;font-size:.9rem;color:var(--c-text)}.award-meta{display:flex;align-items:center;gap:.35rem;margin-top:.2rem}.award-issuer{font-size:.8rem;color:var(--c-accent);font-weight:500}.award-dot{font-size:.75rem;color:var(--c-text-muted)}.award-date{font-size:.8rem;color:var(--c-text-muted)}.award-assoc{font-size:.78rem;color:var(--c-text-muted);margin-top:.1rem}.award-desc{font-size:.82rem;color:var(--c-text-muted);margin-top:.5rem;line-height:1.55}.research-list{display:flex;flex-direction:column;gap:1rem}.research-card{border-left:3px solid var(--c-accent);border-radius:var(--radius);display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}.research-citation{font-size:.9rem;line-height:1.7;color:var(--c-text-muted);flex:1;min-width:260px}.research-link{flex-shrink:0;display:inline-flex;align-items:center;gap:.3rem;font-size:.8rem;font-weight:600;color:var(--c-accent);padding:.3rem .7rem;border:1px solid var(--c-accent);border-radius:var(--radius);transition:background var(--t),color var(--t);align-self:center;white-space:nowrap}.research-link:hover{background:var(--c-accent-dim);color:var(--c-accent-hover)}html:not([data-lang=zh]) [data-lang-show=zh]{display:none}html[data-lang=zh] [data-lang-show=en]{display:none}body{transition:opacity .15s ease}body.lang-switching{opacity:0;pointer-events:none}.empty-state{text-align:center;padding:4rem 2rem;color:var(--c-text-muted)}.empty-state p{margin-top:.5rem;font-size:.9rem}@media(max-width:720px){.hero{padding-block:4rem 2.5rem}.section{padding-block:3.5rem}}
