.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}.theme-toggle[data-astro-cid-x3pjskd3]{background:none;border:none;padding:.25rem;cursor:pointer;color:var(--text);display:flex;align-items:center;justify-content:center;transition:color var(--transition)}.theme-toggle[data-astro-cid-x3pjskd3]:hover{color:var(--accent)}[data-theme=dark] .icon-sun[data-astro-cid-x3pjskd3]{display:inline-block}[data-theme=dark] .icon-moon[data-astro-cid-x3pjskd3]{display:none}:not([data-theme=dark]) .icon-sun[data-astro-cid-x3pjskd3]{display:none}:not([data-theme=dark]) .icon-moon[data-astro-cid-x3pjskd3]{display:inline-block}.lang-switcher[data-astro-cid-a2mxz4y6]{display:flex;align-items:center;gap:.25rem;font-size:.85rem}.lang-switcher[data-astro-cid-a2mxz4y6] a[data-astro-cid-a2mxz4y6]{color:var(--text-muted);text-decoration:none;transition:color var(--transition),background-color var(--transition)}.lang-switcher[data-astro-cid-a2mxz4y6] a[data-astro-cid-a2mxz4y6]:hover{color:var(--accent)}.lang-switcher[data-astro-cid-a2mxz4y6] a[data-astro-cid-a2mxz4y6].active{color:var(--text);font-weight:600;text-decoration:underline}.sep[data-astro-cid-a2mxz4y6]{color:var(--border)}.site-header[data-astro-cid-ctg3m53h]{border-bottom:1px solid var(--border);padding:var(--space-sm) 0;position:sticky;top:0;background:var(--bg);z-index:100}.site-header[data-astro-cid-ctg3m53h].scrolled{box-shadow:none}.header-inner[data-astro-cid-ctg3m53h]{display:flex;align-items:center;gap:var(--space-lg)}.site-name[data-astro-cid-ctg3m53h]{font-family:var(--font-heading);font-weight:700;font-size:1.05rem;color:var(--text);text-decoration:none;white-space:nowrap}.site-name[data-astro-cid-ctg3m53h]:hover{color:var(--accent);text-decoration:none}.site-nav[data-astro-cid-ctg3m53h]{display:flex;gap:var(--space-md);margin-left:auto}.site-nav[data-astro-cid-ctg3m53h] a[data-astro-cid-ctg3m53h]{font-size:.9rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);text-decoration:none;transition:color var(--transition),text-decoration-color var(--transition)}.site-nav[data-astro-cid-ctg3m53h] a[data-astro-cid-ctg3m53h]:hover{color:var(--text);text-decoration:underline}.site-nav[data-astro-cid-ctg3m53h] a[data-astro-cid-ctg3m53h].active{color:var(--text);text-decoration:underline;padding-left:var(--space-sm);margin-left:calc(-1 * var(--space-sm));border-left:2px solid var(--accent)}.header-actions[data-astro-cid-ctg3m53h]{display:flex;align-items:center;gap:var(--space-sm)}.menu-toggle[data-astro-cid-ctg3m53h]{display:none;background:none;border:none;color:var(--text);cursor:pointer;padding:.25rem}@media(max-width:700px){.site-nav[data-astro-cid-ctg3m53h],.header-actions[data-astro-cid-ctg3m53h]{display:none}.menu-toggle[data-astro-cid-ctg3m53h]{display:block;margin-left:auto}.header-inner[data-astro-cid-ctg3m53h].open .site-nav[data-astro-cid-ctg3m53h],.header-inner[data-astro-cid-ctg3m53h].open .header-actions[data-astro-cid-ctg3m53h]{display:flex}.header-inner[data-astro-cid-ctg3m53h].open{flex-wrap:wrap}.header-inner[data-astro-cid-ctg3m53h].open .site-nav[data-astro-cid-ctg3m53h]{order:3;width:100%;flex-direction:column;gap:var(--space-sm);padding-top:var(--space-sm)}.header-inner[data-astro-cid-ctg3m53h].open .header-actions[data-astro-cid-ctg3m53h]{order:4;width:100%;padding-top:var(--space-sm)}}.site-footer[data-astro-cid-gcn2mc3v]{padding:var(--space-2xl) 0 var(--space-xl);margin-top:var(--space-3xl)}.footer-divider[data-astro-cid-gcn2mc3v]{height:1px;background:linear-gradient(to right,transparent,var(--accent),transparent);margin-bottom:var(--space-2xl);opacity:.5}.footer-inner[data-astro-cid-gcn2mc3v]{text-align:center}.footer-copy[data-astro-cid-gcn2mc3v]{font-size:.8rem;color:var(--text-muted);margin:0}.footer-llm[data-astro-cid-gcn2mc3v]{font-size:.75rem;color:var(--text-muted);margin:var(--space-sm) 0 0;opacity:.7}:root{--bg: #ffffff;--bg-secondary: #f7f7f5;--text: #111111;--text-muted: #6b6b6b;--accent: #0f766e;--accent-hover: #0b5f59;--border: #e1e1dd;--code-bg: #f3f1eb;--shadow: 0 1px 2px rgba(15, 23, 42, .06);--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, system-ui, -system-ui, sans-serif;--font-heading: "Georgia", "Times New Roman", serif;--font-mono: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", monospace;--max-width: 880px;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--radius: 3px;--transition: .2s ease}[data-theme=dark]{--bg: #0b1220;--bg-secondary: #111827;--text: #e5e7eb;--text-muted: #9ca3af;--accent: #14b8a6;--accent-hover: #2dd4bf;--border: #1f2937;--code-bg: #020617;--shadow: 0 1px 2px rgba(15, 23, 42, .7)}.skip-link{position:absolute;top:-100%;left:var(--space-md);z-index:200;padding:var(--space-sm) var(--space-md);background:var(--accent);color:#fff;border-radius:var(--radius);font-size:.9rem;font-weight:500;text-decoration:none}.skip-link:focus{top:var(--space-sm)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}body{font-family:var(--font-body);font-size:1.05rem;line-height:1.7;letter-spacing:.01em;color:var(--text);background-color:var(--bg);transition:background-color var(--transition),color var(--transition);min-height:100dvh;display:flex;flex-direction:column}main{flex:1}::selection{background:var(--accent);color:#fff}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);line-height:1.3;letter-spacing:-.02em;color:var(--text);margin-bottom:var(--space-md)}h1{font-size:2.4rem}h2{font-size:1.7rem}h3{font-size:1.35rem}p{margin-bottom:var(--space-md)}a{color:var(--accent);text-decoration:underline;text-decoration-thickness:.06em;text-underline-offset:.17em;transition:color var(--transition),text-decoration-color var(--transition)}a:hover{color:var(--accent-hover);text-decoration-color:currentColor}strong{font-weight:600}ul,ol{padding-left:var(--space-lg);margin-bottom:var(--space-md)}li{margin-bottom:var(--space-xs)}blockquote{border-left:3px solid var(--accent);padding-left:var(--space-md);color:var(--text-muted);font-style:italic;margin-bottom:var(--space-md)}code{font-family:var(--font-mono);font-size:.9em;background:var(--code-bg);padding:.15em .35em;border-radius:3px}pre{background:var(--code-bg);padding:var(--space-md);border-radius:var(--radius);border-left:1px solid var(--accent);overflow-x:auto;margin-bottom:var(--space-md)}pre code{background:none;padding:0}hr{border:none;height:1px;background:linear-gradient(to right,transparent,var(--border),transparent);margin:var(--space-xl) 0}img{max-width:100%;height:auto;border-radius:var(--radius)}.container{width:min(var(--max-width),90vw);margin-inline:auto;padding-inline:var(--space-md)}.page-title{margin-top:var(--space-2xl);margin-bottom:var(--space-2xl);padding-top:var(--space-md);padding-bottom:var(--space-lg);padding-left:var(--space-md);border-bottom:1px solid var(--border);border-left:2px solid var(--accent)}.section{margin-bottom:var(--space-3xl)}.section-title{font-size:1.1rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--space-lg);padding-bottom:var(--space-sm);padding-left:var(--space-md);border-bottom:1px solid var(--border);border-left:2px solid var(--accent)}.btn{display:inline-block;padding:var(--space-sm) var(--space-md);border-radius:var(--radius);font-size:.9rem;font-weight:500;text-decoration:none;transition:background-color var(--transition),color var(--transition);border:1px solid var(--border);color:var(--text);background:var(--bg-secondary)}.btn:hover{background:var(--accent);color:#fff;border-color:var(--accent);text-decoration:none}.link-arrow:after{content:" →"}.back-link{display:inline-block;padding-left:var(--space-md);border-left:2px solid var(--accent);text-decoration:none}.back-link:hover{text-decoration:underline}.tag{display:inline-block;font-size:.8rem;padding:.1em .55em;border-radius:3px;background:transparent;color:var(--text-muted);border:1px solid var(--border);transition:background-color var(--transition),color var(--transition),border-color var(--transition)}a.tag{text-decoration:none}a.tag:hover{background:transparent;color:var(--accent);border-color:var(--accent);text-decoration:none}.pub-entry{margin-bottom:var(--space-lg);padding:var(--space-md) 0 var(--space-lg);border-bottom:1px solid var(--border);border-left:3px solid transparent;padding-left:var(--space-md);transition:background-color var(--transition),border-color var(--transition),transform var(--transition)}.pub-entry:last-child{border-bottom:none}.pub-entry:hover{background-color:var(--bg-secondary);border-color:var(--border);border-left-color:var(--accent);transform:translateY(-1px)}.pub-year-group:not(:first-child){margin-top:var(--space-2xl)}.pub-year-heading{font-size:1rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--border)}.pub-year-group:first-child .pub-year-heading{margin-top:0}.pub-header{margin-bottom:var(--space-xs)}.pub-badge{display:inline-block;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:.15em .5em;border-radius:3px;line-height:1.4;border:1px solid var(--border);background:transparent;color:var(--text-muted)}.pub-badge--journal{background:#e0f2f1;border-color:#80cbc4;color:#00695c}[data-theme=dark] .pub-badge--journal{background:#064e3b;border-color:#34d399;color:#a7f3d0}.pub-badge--conference{background:#e8f5e9;border-color:#a5d6a7;color:#1b5e20}[data-theme=dark] .pub-badge--conference{background:#052e16;border-color:#22c55e;color:#bbf7d0}.pub-badge--thesis{background:#fff8e1;border-color:#ffecb3;color:#8d6e63}[data-theme=dark] .pub-badge--thesis{background:#451a03;border-color:#fed7aa;color:#fed7aa}.pub-badge--other{background:transparent;color:var(--text-muted)}.pub-title{font-weight:600;font-size:1.05rem;margin-bottom:var(--space-xs)}.pub-authors{color:var(--text-muted);font-size:.95rem;margin-bottom:var(--space-xs)}.pub-venue{font-style:italic;font-size:.9rem;color:var(--text-muted)}.pub-year{font-size:.85rem;color:var(--text-muted)}.pub-link{font-size:.85rem;margin-left:var(--space-sm)}.pub-note{margin-top:var(--space-xs);font-size:.85rem;font-style:italic;color:var(--text-muted)}.cv-section{margin-bottom:var(--space-2xl)}.cv-section:first-of-type{margin-top:var(--space-xl)}.cv-employer-group{margin-bottom:var(--space-xl)}.cv-employer-group:last-child{margin-bottom:0}.cv-employer-header{display:inline-block;font-weight:600;font-size:.9rem;color:var(--text-muted);padding:var(--space-xs) var(--space-md);margin-bottom:var(--space-sm);background:color-mix(in srgb,var(--accent) 12%,var(--bg));border-radius:999px}.cv-role{margin-bottom:var(--space-md);padding-left:var(--space-lg);border-left:1px dotted var(--border);margin-left:2px}.cv-role:last-child{margin-bottom:0}.cv-role-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-sm);margin-bottom:var(--space-xs)}.cv-role-title{font-weight:600;font-size:1.05rem;display:inline-flex;align-items:center;gap:.35rem}.cv-role-link-icon{display:inline-flex;color:var(--text-muted);transition:color var(--transition);flex-shrink:0}.cv-role-link-icon:hover{color:var(--accent)}.cv-role-date{font-size:.85rem;color:var(--text-muted);font-style:italic}.cv-role-desc{margin:0;font-size:.9rem;color:var(--text-muted)}.cv-award-citation{margin-top:var(--space-sm);padding-left:var(--space-md);border-left:3px solid var(--border)}.cv-award-citation-text{margin:0;font-size:.9rem;color:var(--text-muted);font-style:italic;line-height:1.5}.cv-skills-wrap{display:flex;flex-wrap:wrap;gap:var(--space-xl) var(--space-2xl)}.cv-skill-list{list-style:none;padding:0;padding-left:var(--space-lg);border-left:1px dotted var(--border);margin:0 0 0 2px}.cv-skill-list li{font-size:.9rem;color:var(--text-muted);margin-bottom:var(--space-xs)}.cv-skill-list li:last-child{margin-bottom:0}.contact-list{list-style:none;padding:0}.cv-contact-item{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-sm);margin-bottom:var(--space-sm)}.cv-contact-item:last-child{margin-bottom:0}.cv-contact-label{display:inline-block;font-weight:600;font-size:.9rem;color:var(--text-muted);padding:var(--space-xs) var(--space-md);background:color-mix(in srgb,var(--accent) 12%,var(--bg));border-radius:999px;flex-shrink:0}.cv-contact-item a,.cv-contact-item span{font-size:.95rem}.post-meta{color:var(--text-muted);font-size:.9rem;margin-bottom:var(--space-lg)}.post-content{margin-bottom:var(--space-2xl)}.post-content h2{margin-top:var(--space-2xl)}.post-content h3{margin-top:var(--space-xl)}.filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-xl);padding-bottom:var(--space-md);border-bottom:1px solid var(--border)}.filter-bar label{font-size:.9rem;color:var(--text-muted)}.filter-bar label:not(:first-child){margin-left:var(--space-md)}.filter-bar select{padding:var(--space-xs) var(--space-sm);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);font-size:.9rem}@media(max-width:640px){h1{font-size:1.6rem}h2{font-size:1.3rem}.skills-grid{grid-template-columns:1fr}}@media print{@page{size:A4;margin:1.8cm 2cm}:root{--bg: #ffffff;--text: #000000;--text-muted: #333333;--accent: #000000;--border: #999999;--bg-secondary: #ffffff;--code-bg: #f5f5f5}body{font-family:Georgia,Times New Roman,serif;font-size:10.5pt;line-height:1.45;background:#fff;color:#000;letter-spacing:0}.no-print,.skip-link,.theme-toggle,.lang-switcher,.site-header,.site-footer,.footer-divider,.filter-bar,.cv-actions,.cv-title-row{display:none!important}.container{width:100%;max-width:100%;padding:0;margin:0}.cv-print-header{display:block!important;text-align:center;margin-bottom:1.2em;padding-bottom:.8em;border-bottom:2px solid #000}.cv-print-name{font-family:Georgia,Times New Roman,serif;font-size:20pt;font-weight:700;letter-spacing:.02em;margin-bottom:.15em}.cv-print-role{font-size:10pt;color:#333;margin-bottom:.3em}.cv-print-contact{font-size:8.5pt;color:#444;margin:0}.cv-print-sep{color:#999;margin:0 .15em}.cv-screen-title{display:none!important}h1,h2,h3{font-family:Georgia,Times New Roman,serif;break-after:avoid;color:#000}.page-title{font-size:16pt;border-left:none;padding-left:0;border-bottom:2px solid #000;padding-bottom:.3em;margin-bottom:1em}.section-title{font-size:12pt;font-weight:700;text-transform:uppercase;letter-spacing:.1em;border-left:none;padding-left:0;border-bottom:1.25pt solid #333;padding-bottom:.35em;margin-bottom:.75em;margin-top:.25em;break-after:avoid;color:#000}.cv-section{margin-bottom:1.4em;break-inside:avoid}.cv-section:first-of-type{margin-top:0}.cv-section:first-of-type p{background:#f5f5f5;padding:.6em .75em;border-radius:2px;border-left:3pt solid #333;margin:0;font-size:9.5pt;line-height:1.5}.cv-employer-group{margin-bottom:1em;break-inside:avoid;padding:.4em 0;border-bottom:.5pt solid #e0e0e0}.cv-employer-group:last-child{border-bottom:none}.cv-employer-header{display:inline-block;font-size:9.5pt;font-weight:700;color:#222;padding:.2em .6em;margin-bottom:.4em;background:#e0e0e0;border:.5pt solid #bbb;border-radius:999px}.cv-role{margin-bottom:.45em;padding-left:.6em;border-left:1.5pt dotted #666;margin-left:2px;break-inside:avoid}.cv-role-head{gap:.3em}.cv-role-title{font-size:10pt;font-weight:700;color:#000}.cv-role-date{font-size:9pt;color:#444;font-style:italic}.cv-role-desc{font-size:9pt;color:#222;margin-top:.15em}.cv-award-citation{margin-top:.4em;padding-left:.5em;border-left:1.5pt solid #999}.cv-award-citation-text{font-size:8.5pt;color:#333;font-style:italic}.cv-skills-wrap{gap:.6em 1.2em}.cv-skill-list{padding-left:.5em;border-left:1pt dotted #999}.cv-skill-list li{font-size:9pt;color:#222}.cv-contact-section{display:none!important}.cv-contact-item{margin-bottom:.3em}.cv-contact-label{font-size:9pt;padding:.1em .4em;background:#e8e8e8}.cv-contact-item a,.cv-contact-item span{font-size:9.5pt}a{color:#000;text-decoration:none}.contact-list a[href]:after{content:" (" attr(href) ")";font-size:.8em;color:#555;word-break:break-all}.contact-list a[href^="mailto:"]:after{content:""}.pub-entry{border-left:none;padding-left:0}pre{border-left:none}hr{background:none;border-top:1px solid #999}.pub-badge{border:.5pt solid #999;background:none!important;color:#333!important}img{break-inside:avoid}}
