:root{--color-bg:#f8fafc;--color-bg-alt:#f1f5f9;--color-text:#1e293b;--color-text-muted:#475569;--color-text-light:#64748b;--color-primary:#2563eb;--color-primary-dark:#1e40af;--color-accent:#3b82f6;--color-border:#cbd5e1;--color-link:#2563eb;--color-link-hover:#1e40af;--font-serif:"Inter","Helvetica Neue",sans-serif;--font-sans:"Inter","Helvetica Neue",sans-serif;--font-mono:"JetBrains Mono","Fira Code",monospace;--space-xs:0.25rem;--space-sm:0.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--max-width:800px;--max-width-wide:1400px;--header-height:70px}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth}body{font-size:1.0625rem;line-height:1.7;background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body,h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);color:var(--color-text)}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.3;margin-bottom:var(--space-md)}h1{font-size:2.5rem;font-weight:500;letter-spacing:-.02em}h2{font-size:1.875rem;margin-top:var(--space-2xl);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-border)}h3{font-size:1.375rem;margin-top:var(--space-xl)}h4{font-size:1.125rem;font-family:var(--font-sans);font-weight:600}p{margin-bottom:var(--space-md)}a{color:var(--color-link);text-decoration:none;transition:color .2s ease}a:hover{color:var(--color-link-hover);text-decoration:underline}ol,ul{margin-bottom:var(--space-md);padding-left:var(--space-lg)}li{margin-bottom:var(--space-xs)}code{font-size:.9em;background-color:var(--color-bg-alt);padding:.15em .4em;border-radius:3px}code,pre{font-family:var(--font-mono)}pre{font-size:.875rem;background-color:#1e1e1e;color:#d4d4d4;padding:var(--space-lg);border-radius:6px;overflow-x:auto;margin-bottom:var(--space-lg)}pre code{background:none;padding:0}blockquote{border-left:3px solid var(--color-primary);padding-left:var(--space-lg);margin:var(--space-lg) 0;font-style:italic;color:var(--color-text-muted)}img{max-width:100%;height:auto}table{width:100%;border-collapse:collapse;margin-bottom:var(--space-lg)}td,th{text-align:left;padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--color-border)}th{font-weight:600;background-color:var(--color-bg-alt)}.container{max-width:var(--max-width);margin:0 auto;padding:0 var(--space-lg)}.container:has(.research-projects-page){max-width:var(--max-width-wide)}.research-projects-page{width:100%}.main-content{min-height:calc(100vh - var(--header-height) - 200px);padding:var(--space-2xl) 0}.header{position:-webkit-sticky;position:sticky;top:0;z-index:100;background-color:var(--color-bg);border-bottom:1px solid var(--color-border);height:var(--header-height)}.header-inner{justify-content:space-between;height:100%}.header-inner,.site-title{display:flex;align-items:center}.site-title{font-family:var(--font-serif);font-size:1.375rem;font-weight:600;color:var(--color-text);text-decoration:none}.site-title:hover{color:var(--color-primary);text-decoration:none}.site-logo{height:40px;width:auto;object-fit:contain}.nav{display:flex;gap:var(--space-lg)}.nav-link{color:var(--color-text-muted);font-size:.9375rem;font-weight:500;text-decoration:none;transition:color .2s ease;position:relative}.nav-link.active,.nav-link:hover{color:var(--color-primary);text-decoration:none}.nav-link.active:after{content:"";position:absolute;bottom:-4px;left:0;right:0;height:2px;background-color:var(--color-primary)}.mobile-nav-toggle{display:none;background:none;border:none;cursor:pointer;padding:var(--space-sm)}.mobile-nav-toggle span{display:block;width:24px;height:2px;background-color:var(--color-text);margin:5px 0;transition:.3s}@media (max-width:768px){.nav{display:none;position:absolute;top:var(--header-height);left:0;right:0;background-color:var(--color-bg);flex-direction:column;padding:var(--space-lg);border-bottom:1px solid var(--color-border);gap:var(--space-md)}.nav.open{display:flex}.mobile-nav-toggle{display:block}}.footer{background-color:var(--color-bg-alt);border-top:1px solid var(--color-border);padding:var(--space-2xl) 0;margin-top:var(--space-3xl)}.footer-inner{flex-direction:column;align-items:center;text-align:center}.footer-inner,.footer-links{display:flex;gap:var(--space-lg)}.footer-link{color:var(--color-text-muted);font-size:.875rem}.footer-link:hover{color:var(--color-primary)}.footer-copyright{font-size:.8125rem;color:var(--color-text-light)}.page-header{margin-bottom:var(--space-2xl)}.page-title{margin-bottom:var(--space-sm)}.page-subtitle{color:var(--color-text-muted);font-size:1.125rem}.home-hero{display:grid;grid-template-columns:200px 1fr;grid-gap:var(--space-2xl);gap:var(--space-2xl);align-items:start;margin-bottom:var(--space-3xl)}.profile-image{width:200px;height:200px;border-radius:50%;object-fit:cover;border:3px solid var(--color-border)}.hero-content h1{margin-bottom:var(--space-xs)}.hero-title-sub{font-size:1.125rem;color:var(--color-text-muted)}.hero-bio,.hero-title-sub{margin-bottom:var(--space-lg)}.social-links{display:flex;gap:var(--space-md)}.social-link{display:inline-flex;align-items:center;gap:var(--space-xs);color:var(--color-text-muted);font-size:.875rem}.social-link:hover{color:var(--color-primary)}.social-link svg{width:18px;height:18px}@media (max-width:640px){.home-hero{grid-template-columns:1fr;text-align:center}.profile-image{margin:0 auto;width:160px;height:160px}.social-links{justify-content:center}}.research-interests{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-bottom:var(--space-lg)}.interest-tag{background-color:var(--color-bg-alt);color:var(--color-text-muted);padding:var(--space-xs) var(--space-md);border-radius:20px;font-size:.875rem;border:1px solid var(--color-border)}.news-list{list-style:none;padding:0}.news-item{display:grid;grid-template-columns:100px 1fr;grid-gap:var(--space-md);gap:var(--space-md);padding:var(--space-sm) 0;border-bottom:1px solid var(--color-border)}.news-date{color:var(--color-text-light);font-size:.875rem;font-family:var(--font-mono)}.publication-list{list-style:none;padding:0}.publication-item{padding:var(--space-lg) 0;border-bottom:1px solid var(--color-border)}.publication-item:last-child{border-bottom:none}.publication-title{font-family:var(--font-serif);font-size:1.125rem;font-weight:600;margin-bottom:var(--space-xs);color:var(--color-text)}.publication-title a{color:inherit}.publication-title a:hover{color:var(--color-primary)}.publication-authors{font-size:.9375rem;color:var(--color-text-muted);margin-bottom:var(--space-xs)}.publication-venue{font-size:.875rem;font-style:italic;color:var(--color-text-light);margin-bottom:var(--space-sm)}.publication-links{display:flex;gap:var(--space-md);margin-top:var(--space-md);flex-wrap:wrap}.publication-link{font-size:.8125rem;color:var(--color-link);display:inline-flex;align-items:center;gap:var(--space-xs)}.publication-year-header{font-family:var(--font-serif);font-size:1.5rem;color:var(--color-primary);margin-top:var(--space-2xl);margin-bottom:var(--space-md);padding-bottom:var(--space-sm);border-bottom:2px solid var(--color-primary)}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:var(--space-xl);gap:var(--space-xl)}@media (max-width:968px){.project-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.project-grid{grid-template-columns:1fr}}.project-card{background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;padding:var(--space-lg);transition:box-shadow .2s ease}.project-card:hover{box-shadow:0 4px 12px rgba(0,0,0,.08)}.project-title{font-family:var(--font-serif);font-size:1.25rem;margin-bottom:var(--space-sm)}.project-title a{color:inherit}.project-title a:hover{color:var(--color-primary)}.project-description{color:var(--color-text-muted);margin-bottom:var(--space-md)}.project-tech{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.tech-tag{background-color:var(--color-bg-alt);color:var(--color-text-light);padding:2px 8px;border-radius:4px;font-size:.75rem;font-family:var(--font-mono)}.teaching-item{margin-bottom:var(--space-xl);padding-bottom:var(--space-xl);border-bottom:1px solid var(--color-border)}.teaching-item:last-child{border-bottom:none}.teaching-role{font-size:.875rem;color:var(--color-primary);font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-xs)}.teaching-course{font-family:var(--font-serif);font-size:1.25rem;margin-bottom:var(--space-xs)}.teaching-info{color:var(--color-text-muted);font-size:.9375rem}.cv-download{display:inline-flex;align-items:center;gap:var(--space-sm);background-color:var(--color-primary);color:#fff;padding:var(--space-sm) var(--space-lg);border-radius:6px;font-weight:500;margin-bottom:var(--space-2xl);transition:background-color .2s ease}.cv-download:hover{background-color:var(--color-primary-dark);color:#fff;text-decoration:none}.cv-section{margin-bottom:var(--space-2xl)}.cv-entry{margin-bottom:var(--space-lg);padding-left:var(--space-lg);border-left:2px solid var(--color-border)}.cv-entry-header{display:flex;align-items:flex-start;gap:var(--space-md);margin-bottom:var(--space-sm)}.cv-company-logo{max-width:48px;max-height:48px;width:auto;height:auto;object-fit:contain;flex-shrink:0;border-radius:4px;border:1px solid var(--color-border);box-shadow:0 1px 3px rgba(0,0,0,.1)}.cv-entry-header-text{flex:1 1}.cv-entry-title{font-weight:600;margin-bottom:var(--space-xs)}.cv-entry-org{color:var(--color-text-muted);margin-bottom:var(--space-xs)}.cv-entry-date{font-size:.875rem;color:var(--color-text-light);font-family:var(--font-mono)}.blog-list{list-style:none;padding:0}.blog-item{padding:var(--space-lg) 0;border-bottom:1px solid var(--color-border)}.blog-item:last-child{border-bottom:none}.blog-title{font-family:var(--font-serif);font-size:1.375rem;margin-bottom:var(--space-sm)}.blog-title a{color:inherit}.blog-title a:hover{color:var(--color-primary)}.blog-meta{font-size:.875rem;color:var(--color-text-light);margin-bottom:var(--space-sm)}.blog-excerpt{color:var(--color-text-muted)}.blog-tags{display:flex;gap:var(--space-sm);margin-top:var(--space-sm)}.blog-tag{font-size:.75rem;color:var(--color-primary);background-color:rgba(139,64,73,.1);padding:2px 8px;border-radius:4px}.blog-post-header{margin-bottom:var(--space-2xl);padding-bottom:var(--space-lg);border-bottom:1px solid var(--color-border)}.blog-post-title{font-size:2rem;margin-bottom:var(--space-md)}.blog-post-meta{color:var(--color-text-muted)}.blog-post-content{font-size:1.0625rem;line-height:1.8}.blog-post-content h2{margin-top:var(--space-2xl)}.blog-post-content h3{margin-top:var(--space-xl)}.blog-post-content p{margin-bottom:var(--space-lg)}.text-muted{color:var(--color-text-muted)}.text-small{font-size:.875rem}.mt-1{margin-top:var(--space-sm)}.mt-2{margin-top:var(--space-md)}.mt-3{margin-top:var(--space-lg)}.mt-4{margin-top:var(--space-xl)}.mb-1{margin-bottom:var(--space-sm)}.mb-2{margin-bottom:var(--space-md)}.mb-3{margin-bottom:var(--space-lg)}.mb-4{margin-bottom:var(--space-xl)}