:root{--color-bg: #ffffff;--color-bg-secondary: #f9fafb;--color-text: #1f2937;--color-text-secondary: #4b5563;--color-text-muted: #9ca3af;--color-border: #e5e7eb;--color-border-light: #f3f4f6;--color-accent: #2563eb;--color-accent-hover: #1d4ed8;--color-accent-subtle: rgba(37, 99, 235, .08);--color-link: #2563eb;--color-link-hover: #1d4ed8;--color-link-visited: #7c3aed;--font-serif: "Source Serif 4", Georgia, "Times New Roman", serif;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", Consolas, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--max-width: 680px;--header-height: 56px;--transition-fast: .15s ease;--transition-base: .2s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:1.7;color:var(--color-text);background:var(--color-bg);min-height:100vh}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);font-weight:600;line-height:1.35;color:var(--color-text)}h1{font-size:var(--text-2xl);margin-bottom:var(--space-md)}h2{font-size:var(--text-xl);margin-top:var(--space-2xl);margin-bottom:var(--space-md)}h3{font-size:var(--text-lg);margin-top:var(--space-xl);margin-bottom:var(--space-sm)}h4{font-size:var(--text-base);margin-top:var(--space-lg);margin-bottom:var(--space-sm)}p{margin-bottom:var(--space-md);color:var(--color-text-secondary)}a{color:var(--color-link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;transition:color var(--transition-fast)}a:hover{color:var(--color-link-hover)}a:visited{color:var(--color-link-visited)}strong,b{font-weight:600;color:var(--color-text)}em,i{font-style:italic}blockquote{margin:var(--space-lg) 0;padding-left:var(--space-lg);border-left:2px solid var(--color-border);color:var(--color-text-secondary);font-style:italic}ul,ol{margin:var(--space-md) 0;padding-left:var(--space-lg);color:var(--color-text-secondary)}li{margin-bottom:var(--space-xs)}li::marker{color:var(--color-text-muted)}hr{border:none;border-top:1px solid var(--color-border);margin:var(--space-2xl) 0}code{font-family:var(--font-mono);font-size:.9em;background-color:var(--color-bg-secondary);border:1px solid var(--color-border);padding:.15em .4em;border-radius:3px}pre{font-family:var(--font-mono);font-size:var(--text-sm);background-color:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:4px;padding:var(--space-md);overflow-x:auto;margin:var(--space-lg) 0;line-height:1.5}pre code{background:none;border:none;padding:0;font-size:inherit}.astro-code{background-color:var(--color-bg-secondary)!important;border:1px solid var(--color-border);border-radius:4px;padding:var(--space-md)!important}.container{width:100%;max-width:var(--max-width);margin:0 auto;padding:0 var(--space-lg)}.page{min-height:100vh;display:flex;flex-direction:column}main{flex:1;padding:var(--space-2xl) 0}.header{border-bottom:1px solid var(--color-border);background:var(--color-bg)}.header-inner{display:flex;align-items:center;justify-content:space-between;height:var(--header-height)}.logo{font-size:var(--text-base);font-weight:600;color:var(--color-text);text-decoration:none}.logo:hover{color:var(--color-text)}.nav{display:flex;gap:var(--space-lg)}.nav-link{font-size:var(--text-sm);color:var(--color-text-secondary);text-decoration:none;transition:color var(--transition-fast)}.nav-link:hover,.nav-link.active{color:var(--color-text)}.footer{padding:var(--space-xl) 0;border-top:1px solid var(--color-border)}.footer-inner{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);text-align:center}.footer-links{display:flex;gap:var(--space-lg)}.footer-link{font-size:var(--text-sm);color:var(--color-text-muted);text-decoration:none;transition:color var(--transition-fast)}.footer-link:hover{color:var(--color-text-secondary)}.footer-text{font-size:var(--text-xs);color:var(--color-text-muted);margin:0}.hero{padding:var(--space-3xl) 0 var(--space-xl)}.hero-title{font-size:var(--text-2xl);font-weight:600;margin-bottom:var(--space-sm);color:var(--color-text)}.hero-subtitle{font-size:var(--text-base);color:var(--color-text-secondary);max-width:100%;margin-bottom:var(--space-lg);line-height:1.7}.hero-links{display:flex;gap:var(--space-md);flex-wrap:wrap}.hero-link{font-size:var(--text-sm);color:var(--color-text-muted);text-decoration:none;transition:color var(--transition-fast)}.hero-link:hover{color:var(--color-link)}.hero-link span{display:none}.section{margin-bottom:var(--space-2xl)}.section-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:var(--space-md);border-bottom:1px solid var(--color-border);padding-bottom:var(--space-sm)}.section-title{font-size:var(--text-sm);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin:0}.section-link{font-size:var(--text-sm);color:var(--color-text-muted);text-decoration:none}.section-link:hover{color:var(--color-link)}.post-list{display:flex;flex-direction:column;gap:var(--space-xs)}.post-item{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-md);padding:var(--space-sm) 0}.post-link{font-size:var(--text-base);color:var(--color-text);text-decoration:none}.post-link:hover{color:var(--color-link)}.post-meta{font-size:var(--text-sm);color:var(--color-text-muted)}.post-date{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);white-space:nowrap}.project-list{display:flex;flex-direction:column;gap:var(--space-md)}.project-item{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-sm) 0;border-bottom:1px solid var(--color-border-light)}.project-item:last-child{border-bottom:none}.project-name{font-weight:500;color:var(--color-text);text-decoration:none}.project-name:hover{color:var(--color-link)}.project-description{font-size:var(--text-sm);color:var(--color-text-secondary);margin:0}.post-header{margin-bottom:var(--space-xl)}.post-title{font-size:var(--text-2xl);font-weight:600;margin-bottom:var(--space-sm)}.post-header .post-meta{font-size:var(--text-sm);color:var(--color-text-muted)}.post-content{margin-bottom:var(--space-2xl)}.post-content h2:first-child{margin-top:0}.post-content img{max-width:100%;height:auto;border-radius:4px;margin:var(--space-lg) 0}.experience-list{display:flex;flex-direction:column;gap:var(--space-xl)}.experience-item{padding-bottom:var(--space-lg);border-bottom:1px solid var(--color-border-light)}.experience-item:last-child{border-bottom:none}.experience-header{margin-bottom:var(--space-sm)}.experience-role{font-size:var(--text-lg);font-weight:600;margin-bottom:var(--space-xs)}.experience-company{color:var(--color-text-secondary)}.experience-meta{font-size:var(--text-sm);color:var(--color-text-muted);font-family:var(--font-mono)}.experience-details{margin-top:var(--space-md)}.experience-details li{margin-bottom:var(--space-sm)}.skills-grid{display:grid;gap:var(--space-lg)}.skills-category h4{font-size:var(--text-sm);font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin:0 0 var(--space-sm) 0}.skills-category p{font-size:var(--text-sm);color:var(--color-text-secondary);margin:0}.research-list{display:flex;flex-direction:column;gap:var(--space-xl)}.research-item{padding-bottom:var(--space-lg);border-bottom:1px solid var(--color-border-light)}.research-item:last-child{border-bottom:none}.research-header{display:flex;align-items:center;gap:var(--space-md);margin-bottom:var(--space-xs)}.status-badge{font-size:var(--text-xs);font-family:var(--font-mono);font-weight:500;padding:2px 6px;border-radius:3px;text-transform:uppercase;letter-spacing:.03em}.status-draft{background:var(--color-bg-secondary);color:var(--color-text-muted);border:1px solid var(--color-border)}.status-preprint{background:#7c3aed1a;color:#7c3aed}.status-review{background:#d977061a;color:#d97706}.status-published{background:#16a34a1a;color:#16a34a}.research-date{font-size:var(--text-sm);font-family:var(--font-mono);color:var(--color-text-muted)}.research-link{text-decoration:none;color:inherit}.research-title{font-size:var(--text-lg);font-weight:600;color:var(--color-text);margin:0;line-height:1.4}.research-link:hover .research-title{color:var(--color-link)}.research-venue{font-size:var(--text-sm);color:var(--color-text-secondary);margin:var(--space-xs) 0 0 0;font-style:italic}.research-abstract{font-size:var(--text-sm);color:var(--color-text-secondary);margin:var(--space-sm) 0 0 0;line-height:1.7}.research-authors{font-size:var(--text-sm);color:var(--color-text-muted);margin:var(--space-sm) 0 0 0}.research-links{display:flex;gap:var(--space-md);margin-top:var(--space-md);flex-wrap:wrap}.paper-link{font-size:var(--text-sm);color:var(--color-link);text-decoration:none}.paper-link:hover{text-decoration:underline}.publications-list{display:flex;flex-direction:column;gap:var(--space-lg)}.publication-item{padding-bottom:var(--space-md);border-bottom:1px solid var(--color-border-light)}.publication-item:last-child{border-bottom:none}.publication-title{font-weight:500;color:var(--color-text);margin-bottom:var(--space-xs)}.publication-venue{font-size:var(--text-sm);color:var(--color-text-secondary);font-style:italic}.publication-authors{font-size:var(--text-sm);color:var(--color-text-muted)}.empty-state{text-align:center;padding:var(--space-2xl) 0}.empty-message{color:var(--color-text-muted);font-size:var(--text-base)}@media(max-width:640px){.hero{padding:var(--space-xl) 0 var(--space-lg)}.hero-links{flex-direction:column;gap:var(--space-sm)}.nav{gap:var(--space-md)}.section-header,.post-item{flex-direction:column;align-items:flex-start;gap:var(--space-xs)}}.section,.post-item,.project-item,.research-item,.experience-item{opacity:1;transform:none}.animate-in{opacity:1}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}html{scroll-behavior:auto}}
