@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&display=swap";:root{--paper: #fafaf8;--ink: #191b1f;--ink-muted: #4b4e55;--accent: #2f5d8a;--border: rgba(25, 27, 31, .14);--font: "IBM Plex Sans", -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;--section-gap: 64px;--inner-gap: 28px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}.scroll-target{scroll-margin-top:100px}body{min-height:100vh;font-family:var(--font);background:var(--paper);color:var(--ink-muted);line-height:1.6;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none;font-weight:600}a:hover{text-decoration:underline}.container{width:min(1000px,100%);margin:0 auto;padding:0 28px 100px;display:flex;flex-direction:column;gap:var(--section-gap)}header,section{display:flex;flex-direction:column;gap:var(--inner-gap)}h1,h2,h3,h4,h5,h6{font-family:var(--font);color:var(--ink);font-weight:700}h1{font-size:clamp(2.2rem,3.4vw,2.75rem);line-height:1.15}h2{font-size:1.05rem;text-transform:uppercase;letter-spacing:.08em;text-align:left;color:var(--ink);padding-bottom:10px;border-bottom:2px solid var(--ink)}h3{font-size:clamp(1.05rem,1.6vw,1.2rem)}.centered-header{position:relative}.section-container{display:flex;flex-direction:column;gap:28px}.card{position:relative}@media (max-width: 768px){.container{padding:48px 18px 80px;gap:52px}}@media (max-width: 520px){.container{padding:40px 16px 60px;gap:44px}}@media print{*,*:before,*:after{background:transparent!important;box-shadow:none!important;text-shadow:none!important;filter:none!important;-webkit-filter:none!important}@page{size:A4;margin:14mm 12mm}html,body{width:100%;font-size:10.5pt;line-height:1.45;color:#000!important}body{background:#fff!important}.container{width:100%;max-width:100%;padding:0;gap:18pt}header,section{gap:10pt}h1{font-size:20pt!important}h2{font-size:12pt!important;letter-spacing:.06em;border-bottom:1px solid #000!important}h3{font-size:11pt!important}a{color:#000!important;text-decoration:underline}a[href^=http]:after{content:" (" attr(href) ")";font-size:7.5pt;font-weight:400;color:#555!important;word-break:break-all}a[href^="mailto:"]:after{content:none}.section-container{gap:12pt}}.header{position:relative;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr);gap:40px;align-items:start}.header-main{display:flex;flex-direction:column;gap:22px}.header-name{margin:0}.header-title{font-size:1rem;letter-spacing:.12em;text-transform:uppercase;font-weight:600;color:var(--accent)}.header-summary{font-size:1rem;max-width:560px;color:var(--ink-muted)}.header-contact{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;align-content:start}.contact-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);overflow-wrap:anywhere}.contact-icon{color:var(--accent);font-size:1.1rem;flex-shrink:0}.contact-item a,.contact-item span{color:var(--ink);font-size:.92rem;font-weight:500}.github-links{display:inline-flex;align-items:center;gap:8px}.github-links span{color:var(--ink-muted)}@media (max-width: 960px){.header{grid-template-columns:minmax(0,1fr);gap:36px}}@media (max-width: 640px){.header-main{align-items:center;text-align:center}.header-contact{grid-template-columns:1fr}}@media print{.header{grid-template-columns:1fr;gap:10pt}.header-main{gap:6pt}.header-title{font-size:9pt;letter-spacing:.15em}.header-summary{font-size:9.5pt;max-width:100%}.header-contact{grid-template-columns:repeat(2,1fr);gap:6pt}.contact-item{padding:4pt 0;border-bottom:none;border-top:1px solid #ccc!important;gap:6pt}.contact-item:nth-child(-n+2){padding-top:0;border-top:none!important}.contact-icon{font-size:9pt}.contact-item a,.contact-item span{font-size:8.5pt}.contact-item a[href]:after{content:none}}.timeline-list{display:flex;flex-direction:column}.timeline-row{display:grid;grid-template-columns:170px minmax(0,1fr);gap:28px;padding:26px 0;border-top:1px solid var(--border)}.timeline-row:first-child{border-top:none;padding-top:4px}.timeline-meta{display:flex;flex-direction:column;gap:6px}.timeline-period{font-size:.88rem;font-weight:600;color:var(--ink)}.timeline-type{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-muted)}.timeline-content{display:flex;flex-direction:column;gap:10px}.timeline-title{margin:0;font-weight:700;color:var(--ink)}.timeline-subtitle{margin:0;font-size:.95rem;color:var(--ink-muted);font-weight:500}.timeline-parttime{font-size:.88rem;font-weight:400;font-style:italic}.duty-list{padding-left:18px;display:grid;gap:8px;color:var(--ink-muted);list-style-type:disc}.duty-list li{font-size:.94rem;line-height:1.55}@media (max-width: 720px){.timeline-row{grid-template-columns:1fr;gap:8px}.timeline-meta{flex-direction:row;align-items:center;gap:14px}}@media print{.timeline-row{grid-template-columns:90pt minmax(0,1fr);gap:10pt;padding:8pt 0;break-inside:avoid;page-break-inside:avoid}.timeline-period{font-size:9pt}.timeline-type{font-size:7.5pt}.timeline-content{gap:3pt}.duty-list{gap:3pt;padding-left:14pt}.duty-list li{font-size:9pt;line-height:1.4}}.skills-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:0 auto}.skill-category{display:flex;flex-direction:column;gap:14px;padding-top:24px;border-top:1px solid var(--border)}.skill-category:nth-child(-n+2){padding-top:0;border-top:none}.category-header h3{margin:0;font-size:1rem;color:var(--ink);padding-bottom:8px;border-bottom:1px solid var(--border)}.skills-tags{display:flex;flex-wrap:wrap;gap:8px}.skill-tag{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border:1px solid var(--border);color:var(--ink-muted);font-size:.86rem}.skill-icon{display:flex;align-items:center;font-size:1rem;color:var(--accent)}@media (max-width: 720px){.skills-list{grid-template-columns:1fr}.skill-category{padding-top:20px;border-top:1px solid var(--border)}.skill-category:first-child{padding-top:0;border-top:none}}@media print{.skills-list{grid-template-columns:1fr;gap:10pt}.skill-category{gap:8pt;padding-top:8pt;border-top:1px solid #ccc!important;break-inside:avoid;page-break-inside:avoid}.skill-category:nth-child(-n+2){padding-top:8pt;border-top:1px solid #ccc!important}.skill-category:first-child{padding-top:0;border-top:none!important}.category-header h3{font-size:10.5pt;padding-bottom:3pt}.skills-tags{gap:4pt}.skill-tag{padding:2pt 7pt;font-size:8pt;border:1px solid #ccc!important}.skill-icon{font-size:9pt}}.publications-list{display:flex;flex-direction:column}.publication-item{display:flex;flex-direction:column;gap:10px;padding:22px 0;border-top:1px solid var(--border)}.publication-item:first-child{padding-top:0;border-top:none}.publication-title{margin:0;color:var(--ink);font-size:1.05rem}.publication-item a:hover .publication-title{color:var(--accent)}.publication-authors{font-style:italic;color:var(--ink-muted);font-size:.9rem}.publication-journal-badge{display:block;color:var(--ink-muted);font-size:.82rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}@media print{.publications-list{gap:10pt}.publication-item{padding:8pt 0;border-top:1px solid #ccc!important;break-inside:avoid;page-break-inside:avoid;gap:4pt}.publication-item:first-child{padding-top:0;border-top:none!important}.publication-authors{font-size:8.5pt}.publication-journal-badge{font-size:8pt}.publication-item a[href]:after{content:none}}.projects-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:0 auto}.project-card{display:flex;flex-direction:column;gap:14px;padding-top:22px;border-top:1px solid var(--border)}.project-card:nth-child(-n+2){padding-top:0;border-top:none}.project-card .project-title{margin:0;color:var(--ink);display:flex;align-items:center;gap:10px}.project-title-link{display:inline-flex;align-items:center;color:var(--ink-muted);font-size:.85rem}.project-title-link:hover{color:var(--accent)}.project-technologies{display:flex;flex-wrap:wrap;gap:10px}.technology-icon-wrapper{display:inline-flex;align-items:center;justify-content:center;color:var(--accent);font-size:1.2rem}.project-description{font-size:.94rem;color:var(--ink-muted);line-height:1.55;flex-grow:1}.has-tooltip{position:relative}.has-tooltip:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 8px);left:0;width:max-content;max-width:min(260px,calc(100vw - 40px));background:var(--ink);color:var(--paper);font-size:.78rem;line-height:1.4;padding:6px 10px;white-space:normal;pointer-events:none;opacity:0;z-index:10}.has-tooltip:hover:after{opacity:1}@media (max-width: 640px){.projects-grid{grid-template-columns:1fr}.project-card{padding-top:20px;border-top:1px solid var(--border)}.project-card:first-child{padding-top:0;border-top:none}}@media print{.projects-grid{grid-template-columns:1fr;gap:10pt}.project-card{gap:6pt;padding-top:8pt;border-top:1px solid #ccc!important;break-inside:avoid;page-break-inside:avoid}.project-card:nth-child(-n+2){padding-top:8pt;border-top:1px solid #ccc!important}.project-card:first-child{padding-top:0;border-top:none!important}.project-description{font-size:8.5pt;line-height:1.4}.technology-icon-wrapper{font-size:10pt}.project-title-link{font-size:8pt}.project-title-link:after{content:none!important}}.navbar{position:sticky;top:0;width:100%;padding:0 20px;background:var(--paper);border-bottom:1px solid transparent;box-shadow:none;display:flex;justify-content:center;gap:1rem;z-index:1000;opacity:0;max-height:0;overflow:hidden;transition:opacity .2s ease-in-out,max-height .2s ease-in-out,padding .2s ease-in-out}.navbar.visible{opacity:1;max-height:120px;padding:14px 20px;border-bottom:1px solid var(--border)}.navbar a{font-family:var(--font);color:var(--ink-muted);text-decoration:none;padding:.4rem .9rem;transition:color .2s;font-weight:500}.navbar a:hover{color:var(--ink);text-decoration:none}.navbar a.active{color:var(--accent);font-weight:600}@media (max-width: 768px){.navbar{gap:.2rem;flex-wrap:wrap;justify-content:center}.navbar a{font-size:.7rem;padding:.2rem .4rem}}@media print{.navbar{display:none!important}}
